JS总结(JS世界构造顺序、学习计划)

1.JS唯一公式

  • 对象.__proto__ === 其构造函数.prototype

2.根公理
(公理是人为规定的,是不容置疑的)

  • Object.prototype是所有对象的(直接或间接)原型

3.函数公理

  • 所有函数都是由Function构造的
  • 任何函数.__proto__ === Function.prototype
  • 任何函数包括:Object、Array(数组)、Function

4.难点

  • [的原型] 等价于 .__proto__
    只不过.__proto__正好是某个函数的prototype
  • 直接原型和间接原型
    对于普通对象来说,Object.prototype是直接原型
    对于数组、函数来说,Object.prototype是间接原型
  • Object.prototypeObject.prototype 对象的区别
    Object.prototype表示一个地址
    这个地址对应的对象是根对象(语言上依旧认为:地址就是对象)
    Function是构造除了 Object.prototype这个地址,不是对象。
    对象里从来都不包含另一个对象

JS世界

1.JS世界的构造顺序

  1. 创建根对象#101(toString、value of,其原型设定null),根对象没有名字
  2. 创建函数的原型#208(call、apply),原型__p为#101
  3. 创建数组的原型#404(push、pop),原型__p为#101
  4. 创建没有名字的Function函数#342,原型__p为#208
  5. Function.prototype等于#208
  6. 此时发现Function.__proto__ ===Function.prototype
  7. 用Function创建Object#909(实际没有名字),原型__p为#208(公式,等于其构造函数的prototype值)
  8. Object.prototype等于#101(把对象的原型地址存到上面),而Object是对象的构造函数,因此对象.__p === Object.prototype
  9. 用Function创建Array#1101(实际没有名字),原型__p为#208(公式,等于其构造函数的prototype值)
  10. Array.prototype等于#404(把数组的原型地址存到上面)。
  11. 创建window对象(不属于JS世界是浏览器的)
  12. 用window的ObjectArrayFunction属性将7和0中的函数命名
    如:window.Object、window.Array、window.Function
    从这一刻起,Object和Array才有了名字,其值分别为#909、#1101
  13. 记住一点,JS创建一个对象时,不会给这个对象名字的,要有了window对象才会有名字
    我们要通过名字才能访问这个对象
    根是没有名字的,它是一出生就有的
    只能说:window.Object.prototype存了根对象的地址。

2.构造函数

  1. new Object()创建 obj1
  2. new会将obj1的原型__p设置为Object.prototype
  3. Array和Funcitont同理

3.漂亮的图示
JS总结(JS世界构造顺序、学习计划)_第1张图片

4.总结

4.1 构造函数

  • 是用来构造函数的
  • 会预先存好对象的原型,原型的原型是根
  • new的时候会讲对象的__p指向原型

4.2 对象

  • 所有对象都直接或间接指向根对象
  • 如果对象想要分类,就在原型链上加一环
  • 用构造函数可以加这一环

4.3 思考问题

  • Object.prototype的原型是什么?
    思路:[的原型]就是问__p是什么
    答:根据7个数据类型推测,Object.prototype是对象,对象的原型等于其构造函数的prototype,但由根公理Object.prototype是所有对象的原型得到它是根对象,因此原型为null
  • Function.prototype的原型是什么?
    答:Function.prototype.__p__ === Object.prototype
  • Function的原型是什么?
    答:由公式得Funcition.__proto__ === Function.prototype
  • Array.prototype.toString的原型是什么?
    答:Array.prototype.toString是一个函数,函数的构造函数是Function,由公式得到其原型是Function.prototype
    JS总结(JS世界构造顺序、学习计划)_第2张图片

JS学习计划

  • 第一阶段
    了解:JS语法、特性、对象、数组、函数等
  • 第二阶段
    了解:AJAX、设计模式、封装、面向对象、MVC
  • 第三阶段
    Vue和React全家桶

你可能感兴趣的:(JavaScript,javascript)