之前看《JavaScript高级设计程序》对原型和原型链有了一定的了解,也觉得自己掌握了,但是今天回顾起来,发现很多都忘记了…今天就来总结下吧
原型
- 任何函数都有显式原型
prototype
- 任何引用(对象/数组/函数)都有隐式原型
__proto__
- 实例对象的隐式原型和其构造函数的显示原型相同
function Person(name) { this.name = name; }
Object.prototype.zhiye = 'student';
var lxt = new Person('liang');
console.log(lxt.name);//liang
console.log(lxt.zhiye);//student
原型链
当一个构造函数的实例是另一构造函数的显示原型时,这样就会形成一个链条。
此图最能说明!!!
如果实例对象中的找不到对应的属性,就去Fo.prototype找,还是找不到就去Foo.prototype找,仍然找不到就去Object.prototype找。
原型链的顶端是null
参考到的深度好文:
- https://zhuanlan.zhihu.com/p/63940964
- https://www.cnblogs.com/loveyaxin/p/11151586.html
- https://blog.youkuaiyun.com/yucihent/article/details/79424506