一张图让你完全了解原型与原型链!

112 阅读1分钟

前端小菜鸟第一次写掘金,写的不好请见谅

原型与原型链其实很好理解

我经过一下午的测试画出以下这张图

原型图.png

简单来说:

  1. 原型链指向原型,当前对象构造器指向当前构造函数
    • 构造函数(function fn(){})实例化出来对象(new fn())
    • 大function (Funciton(){}) 实例化出来构造函数(function fn(){})
    • 对象(Object) 生成大function (Funciton(){})

注意:大function(Function)的原型 和 原型链都指向对象(Object)的原型,而Object的原型的原型指向Object的原型链,Object的原型链则指向一个特殊的构造器,这个构造器的原型则指向null。(这里就别问我了,我这个小菜鸟也不懂了)

还有一个知识点:

原型(prototype)是函数特有的,这句话我在一个视频上听说过。经过我的测试我认为是对的,其中有些有意思的点,如Object,String,Number等也是存在prototype的,所以我个人推论这些都属于特殊的构造函数。(当然菜鸟的推论不一定对,大佬们也可以给出自己的意见)

还有就是js中任何东西都存在原型链,这句话是错误的。经过我的测试如:{},1 这些 需要存储为变量才能存在原型链。如:错误:1.__propt__。正确:let n=1;n.__propt__。而有些则无法存在__proto__,如:undefined,null等