JavaScript中的原型和原型鏈

2021-09-24 07:58:02 字數 1005 閱讀 4221

上面的圖看懂了麼,沒懂不要緊。先看個栗子:

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 建立例項 ...