三个重要知识
JS公式:对象.__proto__===其构造函数.prototype
根公理:Object.prototype是所有对象的(直接或间接)原型
函数公理:所有函数都是由Function构造的
JS世界的构造顺序
- 创建根对象#268(toString),根对象没有名字
- 创建函数的原型#306(call/apply),原型__p为#268
- 创建数组的原型#146(push/pop),原型__p为#268
- 创建Function#66,原型__p为#306
- 让Function.prototype等于#306(有名字了)
- 此时发现Function的__proto__和prototype都是#306
- 用Function创建Object(实际没有名字)
- 让Object.prototype等于#268(有名字了)
- 用Function创建Array(实际没有名字)
- 让Array.prototype等于#146(有名字了)
- 创建window对象(不属于js世界)
- 用window的'Object''Array'属性将7和9中的函数命名
- 记住一点,JS创建一个对象时,不会给这个对象名字
总结
- 构造函数
是用来构造对象的
会预先存好对象的原型,原型的原型是根
new的时候将对象的__p指向原型 - 对象
所有对象都间接或直接指向根对象
如果对象想要分类,就在原型链上加一环
用构造函数可以加一环