JS 对原型,原型链的理解

96 阅读1分钟

1.什么是原型

我们每次创建一个对象,就会分配一个与之对应的对象,这个对象就是原型,每一个实例会从原型上继承其属性
我们还得补充几个知识点:
每个对象都有__proto__,它指向该对象的原型
函数都会有prototype这个属性,如果该函数是一个构造函数,那么它指向的也是该实例的原型(如果是普通函数,那它指向也是个对象,暂无用处)
写个例子证实一下

image.png

2.什么是原型链

当我们寻找该实例的属性,如果找不到,就会向上寻找该原型对象的属性。如果再找不到就再找原型的原型直到Object的原型对象停止。这一寻找的过程就叫原型链,其实原型链是通过__proto__连接而成的
我们举个例子看下

image.png

当我们读取该实例上的属性就会通过__proto__一层一层的往上找

image.png

总结

所以当我们实例一个对象时,我们通过__proto__去继承构造函数的属性,构造函数可以通过prototype增加共有的方法及属性