完整原型鏈結構

代碼圖解

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 -> nullc++

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

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

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

相關文章
相關標籤/搜索