原型链的总结
原型链是js中的重中之重。因为我感觉红宝石书上的记载不够详尽易懂,因此我自己做了一下总结,方便以后复习时使用。
这里有几个要注意的点:
- 只有构造函数才有prototype属性
- 构造函数的原型是原型对象,因此函数的原型具有__proto__属性和construct属性
- 构造函数的实例是对象,对象具有__proto__属性,__proto__属性指向构造函数的原型
- 除了Function.prototype,所有构造函数的__proto__属性都指向Function.prototype,Function.prototype的__proto__指向Object.prototype,Object.prototype指向null
- Object的__proto__指向Function.prototype,Function的__proto__属性也指向Function.prototype,因为他们都是构造函数
- 字面量创造出来的对象和构造函数创建出来的实例对象的__proto__的指向不一样,因为字面量创造出来的对象(…=new Object()),它的构造函数是Object,因此它的__proto__指向Object.prototype,而构造函数创造出来的实例对象(…=new Fn()),它指向Fn.prototype