JS的原型鏈,這個圖你沒見過
阿新 • • 發佈:2018-12-15
想到Objective-C有個isa指標,物件的isa指向類,類的isa指向元類,元類的isa指向自己。正是有了isa指標,才有了強大的runtime功能。
那麼,前端技術js也有自己的指向關係,這裡借用《JavaScript高階程式設計》中的描述:
- 每個建構函式都有一個原型物件(prototype)
- 原型物件都包含一個指向建構函式的指標(constructor)
- 例項都包含一個指向原型物件的內部指標(__proto__指向prototype)
看到第1,2的時候,大腦中應該有個環形影象。結合下面程式碼,總結一下:
function Person(name){ this.name=name; } Person.prototype.printName=function(){ alert(this.name); } var person1=new Person(‘Byron’); var person2=new Person('Frank');
有如下圖:
每一個物件都有一個__proto__,只有函式物件才有prototype。整體上都是從左向右找原型。Object.prototype的__proto__是null
constructor指向了本身(圖中灰色虛線)