原型鏈是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