原型链和继承备忘录

97 阅读1分钟

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/… image.png

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上,方法加在原型上。