JS三大定理
定理1:JS公式
对象.__proto__ ===其构造函数.prototype
公理二:根公理
Object.prototype
是所有对象(间接或直接)原型
公理三:函数公理
所有的函数都是由Function构造的
任何函数.__proto__===Function.prototype
任意函数有Object/Array/Function
易错点1:xxx的原型
{name:'xuansining'}的原型
[1,2,3].原型
Object的原型
xxx.原型 === xxx.__proto__
所以Object的原型
等于Object.__proto__
接下来要讨论
JS世界的构造顺序
- 创建根对象#101(toString),根对象没有名字
- 创建函数的原型#208(call/apply),它的__p : #101
- 创建数组的原型#404(push/pop),它的__p :#101
- 创建Function#342,
- Function的_p:#208(还没有名字)
- Function的prototype:#208
- 此时你发现
Function.__proto__
和Functipn.prototype
都是#208 - 由Function创建出没有名字的Object#1111
- Object#1111的prototype为#101
- 由Function创建出没有名字Array #2222
- Array#2222的prototype为#404
- 创建window对象
- Window中的属性Object为#1111,属性Array为#2222(Obeject和Array有名字了)
参考 饥人谷