完整原型鏈結構

代碼圖解

var o = {
    appendTo: function (_dom) {}
};
function DivTag() {}
DivTag.prototype = o;
var tag = new DivTag();

clipboard.png

繪製並分析完整原型鏈結構

function Person() {}
var p = new Person();
  • p -> Person.prototype -> Object.prototype -> null

  • 對於Object.prototype又會牽扯出Object構造函數
  • Object構造函數:o -> Object.prototype -> null
  • PersonObject可以作爲構造函數看待,也可以作爲對象看待,當作爲對象看待時,他們就是Function的實例
  • PersonFunction的實例,繼承自Function.prototype
  • Object也是Function的實例,繼承自Function.prototype
  • Function也是Function創建出來的(這個說法是推導出來的,雖然看起來有點像無稽之談,但是Function確實是一個特殊的情況,是JavaScript中唯一的特例)

  • Function.prototype -> Object.prototype -> null

clipboard.png
Person原型對象,Function原型對象,Object原型對象,這三個原型對象沒有畫是由誰創建出來的,不必要糾結這三個對象是誰創建出來的,這些是由底層c++實現的,如果說非要畫的話,很有可能創建它們就是Object

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章