看圖之前我們首先來了解幾個對象原型的基本知識:
例子:
function Fn() {}// Fn為構造函數
var f1 = new Fn();//f1是Fn構造函數創建出來的對象
構造函數的prototype屬性值就是對象原型。(Fn.prototype就是對象的原型)
構造函數的prototype屬性值的類型就是對象 typeof Fn.prototype===object.
對象原型中的constructor屬性指向構造函數 (Fn.prototype.constructor===Fn)
對象的__proto__屬性值就是對象的原型。(f1.__proto__就是對象原型)
Fn.prototype===f1.__proto__ 其實它們兩個就是同一個對象---對象的原型。
所有Fn.prototype.__proto__===Object.prototype
typeof Object.prototype ===object。
Object.prototype.__proto__===null。
我討論原型就是指的對象與原型對象之間的關系。所以原型鏈也稱之為對象鏈。
有了以上的基礎知識,下面的原型鏈圖你就可以看明白了。
所以對象f1的原型鏈:f1.__proto__---->Fn.prototype.__proto__----->Object.prototype.__prototype__---->null