JS原型

97 阅读1分钟

三个重要知识

JS公式:对象.__proto__===其构造函数.prototype
根公理:Object.prototype是所有对象的(直接或间接)原型
函数公理:所有函数都是由Function构造的

JS世界的构造顺序

  1. 创建根对象#268(toString),根对象没有名字
  2. 创建函数的原型#306(call/apply),原型__p为#268
  3. 创建数组的原型#146(push/pop),原型__p为#268
  4. 创建Function#66,原型__p为#306
  5. 让Function.prototype等于#306(有名字了)
  6. 此时发现Function的__proto__和prototype都是#306
  7. 用Function创建Object(实际没有名字)
  8. 让Object.prototype等于#268(有名字了)
  9. 用Function创建Array(实际没有名字)
  10. 让Array.prototype等于#146(有名字了)
  11. 创建window对象(不属于js世界)
  12. 用window的'Object''Array'属性将7和9中的函数命名
  13. 记住一点,JS创建一个对象时,不会给这个对象名字

图片1.png

总结

  • 构造函数 是用来构造对象的
    会预先存好对象的原型,原型的原型是根
    new的时候将对象的__p指向原型
  • 对象 所有对象都间接或直接指向根对象
    如果对象想要分类,就在原型链上加一环
    用构造函数可以加一环