JS原型链回顾
前两年在看JS原型链的时候花了挺久终于搞懂了,时间一久又渐渐生疏,趁机画个图总结下<img class="alignnone wp-image-2117 size-large" src="https://www.zenoven.com/wp-content/2017/09/JS原型链-1000x678.png" alt="" width="1000" height="678" />
主要知识点:
- 在用构造函数F创建新的实例对象f时,会为f创建__proto__属性,指向F的prototype。
- 假如现在要查找a属性,那么先看看f上有没有,没有的话再看看f.__proto__(即F.prototype)上有没有,没有的话再看f.__proto__.__proto__有没有,一步一步往上查
另外关于Function和Object比较特殊的点:
- Object因为是构造函数,是函数,所以作为Function的实例,Object.__proto__ 指向其构造函数的prototype,即Function.prototype,Object.__proto__ === Function.prototype
- 同理,Function因为是构造函数,是函数,所以作为实例,Function.__proto__指向其构造函数的prototype,即Function.prototype,Function.__proto__ === Function.prototype
- Function.prototype因为是对象,是Object的实例,所以其__proto__指向 Object.prototype
参考文章: