JS 重点回顾与总结,内容包括知识点、难点和重点、JS 世界的构造顺序、图解 JS 世界、总结。
一、知识点
基本概念: 内存、变量、数据类型、对象
控制语句: if...else... 和 for...
对象:
- 原型、原型链
- 对象分类
- new 一个新对象
- 构造函数
- this 的隐式传递和显式传递
二、难点和重点
JS 三座大山
原型、this、AJAX
第一个重要知识:JS 公式
对象.__proto__ === 其构造函数.prototype
JS 唯一公式,如果不会就套公式
第二个重要知识:根公理
Object.prototype 是所有对象的(直接或间接)原型
加了一个直接或间接,所谓公理就是规定好的
第三个重要知识:函数公理
所有函数都是由 Function 构造的
任何函数.__proto__ === Function.prototype
任意函数包括 Object / Array / Function
基于这三个知识和基础知识,可以推出 JS 世界
三、JS 世界的构造顺序
1. 创建根对象 ##101(toString),根对象没有名字
2. 创建函数的原型 #208(call / apply),原型 __p 为 #101
3. 创建数组的原型 ##404(push / pop),原型 __p 为 #101
4. 创建 Function #342,原型 __p 为 #208
5. 用 Function.prototype 存储函数的原型,等于 #208
6. 此时发现 Function 的 __proto__ 和 prototype 都是 #208
// 破案了,Function 函数是自己构造自己
7. 用 Function 创建 Object
8. 用 Object.prototype 存储对象的原型,等于 #101
9. 用 Function 创建 Array
10. 用 Array.prototype 存储数组的原型,等于 #404
11. 创建 window 对象
12. 用 window 的 'Object' 'Array' 属性将 7 和 9 中的函数命名
13. 记住一点,JS 创建一个对象时,不会给这个对象名字的
——————————————————————————
1. 用 new Object() 创建 obj1
2. new 会将 obj1 的原型 __p 设置为 Object.prototype,也就是 #101
3. 用 new Array() 创建 arr1
4. new 会将 arr1 的原型 __p 设置为 Array.prototype,也就是 #404
5. 用 new Function 创建 f1
6. new 会将 f1 的原型 __p 设置为 Function.prototype,也就是 #208
————————————————————————————————————
1. 自己定义构造函数 Person,函数里给 this 加属性
2. Person 自动创建 prototype 属性和对象的对象 #502
3. 在 Person.prototype #502 上面加属性
4. 用 new Person() 创建对象 p
5. new 会将 p 的原型 __p 设为 #502
四、图解 JS 世界
五、总结
1. 构造函数
- 是用来构造对象的
- 会预先存好对象的原型,原型的原型是根
- new 的时候将对象的 __p 指向原型
2. 对象
- 所有对象都直接或间接指向根对象
- 如果对象想要分类,就在原型链上加一环
- 用构造对象可以加一环
「资料来源:©饥人谷」