mdn:developer.mozilla.org/zh-CN/docs/…
原文:(任何函数的原型属性 __proto__
都是 window.Object.prototype.
)
理解:(任何函数的原型属性的 __proto__
都是 window.Object.prototype.
)
作用:原型对象的链。当试图访问一个对象的属性时,它不仅仅在该对象上搜寻,还会搜寻该对象的原型,以及该对象的原型的原型,依次层层向上搜索,直到找到一个名字匹配的属性或到达原型链的末尾。
如果 buildObject
不包含属性信息, 那么浏览器会在 buildObject
的 __proto__
中进行查找(同 buildObject.prototype). 如属性在 buildObject
的 __proto__
中查找到,则使用 buildObject
中 __proto__
的属性。
const apply = function buildObject(x, y) {
this.x = x;
this.y = y;
}
window.object = new apply(1, 2)
window.objectCons = apply
流程图链接:www.processon.com/diagraming/…
var o = new Foo();
实际执行代码
var o = new Object();
o.__proto__ = Foo.prototype;
Foo.call(o);
class A{}
class B extends A{
constructor(){
super()
}
}
const b = new B();
先执行B的constructor()在执行A的constructor()再把A中的this都绑定为B的实例,即B中的this等于指向A,并且把A上的属性加到B上,方法加在原型上。