代码图解

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


blob
45 声望2 粉丝

A man who concentrates on coding.


下一篇 »
Function