原型(prototype)、__proto__、constructor、原型链

_ _ proto _ _

__ proto __和constructor属性是对象所独有的,当构造函数创建一个实例后,该实例内部将包含一个指针,指向构造函数的原型对象(fn.protorype),这个指针就是 __ proto __.
作用:当访问一个对象的属性时,如果该对象内不存在这个属性,就去它的 __ proto 属性所指向的那个对象(父对象)里找,一直找,直到 proto 属性的重点为null,然后返回undefined,再向上找就相当于再null值上找,就会报错。通过 proto __ 属性对象连接起来的这条链路就是原型链

原型(prototype)

prototype属性是函数所独有的,这个属性是一个指针,指向一个对象。因为函数也是一种对象,所以函数也拥有__proto__和constructor属性。
作用: 让该函数所实例化的对象们都可以找到公用的属性和方法,即 f1.proto === Foo.prototype

constructor(构造函数)

constructor属性也是对象才拥有的,指向该对象的构造函数,所有函数最终的构造函数指向都是Function.

原型链

当访问一个对象的某个属性的时候,会先在这个对象的属性上查找,如果没有找到,则会去它的__ proto __ 上查找,即构造函数的原型对象(构造函数.prototype),如果还没有找到就会再在构造函数的prototype. __ proto __上查找,这样一层一层向上查找形成的一个链式结构,我们称为 原型链。

发布了23 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/diwang_718/article/details/104972434