上面的圖看懂了麼,沒懂不要緊。先看個栗子:
function
foo()
foo.prototype.name = 'haha'
const foo = new foo()
const bar = new foo()
console.log(foo.name) // haha
console.log(bar.name) // haha
複製**
沒錯,這個foo
是建構函式,foo
是例項物件。嗯,繼續往下看。
以上,我們可以看出建構函式、原型物件、例項之間的關係。每個建構函式都有乙個原型物件(prototype
),原型物件都包含乙個指向建構函式的指標(constructor
),而每個例項都包含乙個指向原型物件的指標(__proto__
)。
如果原型物件(prototype
)是個例項呢,這樣我們通過foo.prototype.__proto__
又會找到另乙個原型物件(object.prototype
)。如此層層遞進,例項與原型就形成了乙個鏈條,這就是原型鏈。
console.log(foo.prototype.__proto__ === object.prototype) // true
複製**
console.log(function.__proto__ === function.prototype) // true
console.log(function.__proto__.__proto__ === object.prototype) // true
console.log(object.__proto__ === function.prototype) // true
複製**
有興趣的可以看看知乎上的討論 javascript中的原型物件
function person person.prototype.name kobe person.prototype.age 23 person.prototype.job player person.prototype.sayname function var person1 new perso...
JavaScript中原型和原型鏈
原型 prototype 為其他物件提供共享屬性的物件。每個函式都有乙個原型 prototype 屬性,這個屬性是乙個指標,指向乙個物件,這個物件包含特定例項共享的一些屬性和方法。以例服人 這個例子說明了原型物件是共享的,並且是乙個指標,並且物件的例項中也有指向prototype指向物件的指標。fu...
深入javascript之原型和原型鏈
所有引用型別 函式,陣列,物件 都擁有 proto 屬性 隱式原型 所有函式擁有prototype屬性 顯式原型 僅限函式 原型物件 擁有prototype屬性的物件,在定義數時就被建立 先複習下建構函式 建立建構函式 function word words word.prototype 建立例項 ...