JS原型鏈理解

看風景就發表於2016-11-21

1. 每個物件都有原型屬性(__proto__)
2. 物件的原型(__proto__)指向其建構函式(Constructor)的prototype屬性
3. 建構函式(Constructor)的prototype屬性本身也是一個物件,其原型(__proto__)亦指向其建構函式的prototype
4. 如此形成一個鏈式結構,而Constructor.prototype若沒有自定義建構函式,則其始終是一個物件,建構函式為Object,
  原型為Object.prototype
5. Object.prototype的原型為null,原型鏈結束

原型鏈一般用來查詢物件的屬性和方法,進行類的繼承等功能

現象說明

Object.prototype.__proto__ === null   JS世界的源頭一片荒蕪,一切皆空

Object.__proto__ == Function.prototype   Object是構造器,本身也是函式,所以其原型就是Function的prototype

Function.__proto__ == Function.prototype  Function也是一種函式,所以其原型也是Function的prototype


相關方法

object.hasOwnProperty(propName)  判斷物件本身是否有該成員,而不是從原型鏈繼承的成員

object1.isPrototypeOf(object2)        判斷object1是否在object2的原型鏈上

相關文章