淺談JavaScript原型及原型鏈
1、原型
每個函式都有一個prototype(原型)屬性,這個屬性是一個指標,指向一個物件,這個物件的用途是包含所有例項共享的屬性和方法。Prototype就是通過呼叫建構函式而建立的那個物件例項的原型物件。使用原型物件的好處是可以讓所有例項共享它所包含的屬性和方法。
2、原型鏈
原型鏈是實現繼承的主要方法。其基本思想是利用原型讓一個引用型別繼承另一個引用型別的屬性和方法。
建構函式、原型和例項的關係:
① 建構函式有一個原型屬性prototype指向一個原型物件。
② 原型物件包含一個指向建構函式的指標constructor。
③ 例項包含一個指向原型物件的內部指標[[prototype]] 。
假如讓原型物件等於另一個型別的例項,則此時的原型物件包含一個指向另一個原型物件的指標,相應地,另一個原型物件中也包含著一個指向另一個建構函式的指標。假如另一個原型又是另一個型別的例項,那麼上述關係依然成立,如此層層遞進,就構成了例項與原型的鏈條,這就是所謂的原型鏈的基本概念。
簡單理解:
JavaScript在建立物件時,不論是普通物件還是函式物件,都有一個叫做__proto__的內建屬性,用於指向建立它的函式物件的原型物件prototype。
以Student類繼承Person類為例(student為Student類的例項,person為Person類的例項):
① student物件有__proto__屬性,它指向建立它的函式物件person的prototype。
- student.__proto__ === person.prototype
② person.prototype物件也有__proto__屬性,它指向建立它的函式物件Object的prototype。
- person.prototype.__proto__ === Object.prototype
③ Object.prototype物件也有__proto__屬性,但它較特殊,為null。
- Object.prototype.__proto__ === null
由__proto__串起來的直到Object.prototype.__proto__為null的鏈,叫原型鏈。
相關文章
- JavaScript 原型及原型鏈JavaScript原型
- JavaScript教程全套影片合集:原型及原型鏈JavaScript原型
- 《JavaScript 闖關記》之原型及原型鏈JavaScript原型
- 淺談JS物件的建立、原型、原型鏈繼承JS物件原型繼承
- JS核心系列:淺談 原型物件和原型鏈JS原型物件
- JavaScript原型與原型鏈JavaScript原型
- JavaScript 原型 與 原型鏈JavaScript原型
- javascript——原型與原型鏈JavaScript原型
- javascript原型鏈及繼承JavaScript原型繼承
- js原型及原型鏈JS原型
- javascript之原型與原型鏈JavaScript原型
- JavaScript中原型與原型鏈JavaScript原型
- JavaScript原型與原型鏈分析JavaScript原型
- JavaScript中的原型、原型鏈、原型模式JavaScript原型模式
- 從感性角度談原型 / 原型鏈原型
- JavaScript 原型鏈JavaScript原型
- JavaScript原型鏈JavaScript原型
- JavaScript擴充套件原型鏈淺析JavaScript套件原型
- 7. JavaScript 原型與原型鏈JavaScript原型
- JavaScript系列之原型與原型鏈JavaScript原型
- 再解 JavaScript 原型與原型鏈JavaScript原型
- javascript原型和原型鏈詳解JavaScript原型
- 淺談JS原型JS原型
- 深入淺出JavaScript之原型鏈&繼承JavaScript原型繼承
- 深入JavaScript系列(六):原型與原型鏈JavaScript原型
- 如何理解JavaScript的原型和原型鏈?JavaScript原型
- JavaScript深入之從原型到原型鏈JavaScript原型
- JavaScript 深入之從原型到原型鏈JavaScript原型
- 徹底搞懂JavaScript原型和原型鏈JavaScript原型
- JavaScript之原型鏈JavaScript原型
- 淺析JS原型鏈JS原型
- 建構函式、原型及原型鏈函式原型
- 【機制】JavaScript的原型、原型鏈、繼承JavaScript原型繼承
- 深入淺出JavaScript之原型鏈和繼承JavaScript原型繼承
- 【Javascript 基礎】原型鏈JavaScript原型
- JS function 是函式也是物件, 淺談原型鏈JSFunction函式物件原型
- JavaScript從原型到原型鏈,細緻講解JavaScript原型
- 三分鐘看完JavaScript原型與原型鏈JavaScript原型