ZenOven's Archivers

From zenoven on 2017-09-18 18:48:58

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" />

主要知识点:

  1. 在用构造函数F创建新的实例对象f时,会为f创建__proto__属性,指向F的prototype。

  2. 假如现在要查找a属性,那么先看看f上有没有,没有的话再看看f.__proto__(即F.prototype)上有没有,没有的话再看f.__proto__.__proto__有没有,一步一步往上查


另外关于Function和Object比较特殊的点:

  1. Object因为是构造函数,是函数,所以作为Function的实例,Object.__proto__ 指向其构造函数的prototype,即Function.prototype,Object.__proto__  === Function.prototype

  2. 同理,Function因为是构造函数,是函数,所以作为实例,Function.__proto__指向其构造函数的prototype,即Function.prototype,Function.__proto__ ===  Function.prototype

  3. Function.prototype因为是对象,是Object的实例,所以其__proto__指向 Object.prototype


参考文章:

查看完整版本: JS原型链回顾

Tags: JS, prototype, __proto__, 原型


©ZenOven