代碼圖解
var o = {
appendTo: function (_dom) {}
};
function DivTag() {}
DivTag.prototype = o;
var tag = new DivTag();
繪製並分析完整原型鏈結構
function Person() {}
var p = new Person();
p
->Person.prototype
->Object.prototype
->null
- 對於
Object.prototype
又會牽扯出Object
構造函數 -
Object
構造函數:o
->Object.prototype
->null
-
Person
與Object
可以作爲構造函數看待,也可以作爲對象看待,當作爲對象看待時,他們就是Function
的實例 -
Person
是Function
的實例,繼承自Function.prototype
-
Object
也是Function
的實例,繼承自Function.prototype
Function
也是Function
創建出來的(這個說法是推導出來的,雖然看起來有點像無稽之談,但是Function
確實是一個特殊的情況,是JavaScript中唯一的特例)-
Function.prototype
->Object.prototype
->null
Person
原型對象,Function
原型對象,Object
原型對象,這三個原型對象沒有畫是由誰創建出來的,不必要糾結這三個對象是誰創建出來的,這些是由底層c++
實現的,如果說非要畫的話,很有可能創建它們就是Object
。