【笔记】JS总结
JS 三座大山:原型、this、AJAX
- JS原型公式
对象.__proto__ === 其构造函数.prototype
- 根公理
Object.prototype是所有对象的(直接或者间接)原型 - 函数公理
所有函数都是由Function构造的
任何函数.__proto__ === Function.prototype
任意函数有Object / Array / Function
注意
Object
的原型是Obiect.__proto__
- 原型分为直接原型和间接原型两种
对于普通对象,Object.prototype
是直接原型
对于数组、函数,Object.prototype
是间接原型
JS世界的构造顺序
- 创建根对象,根对象没有名字,假设地址为 #101 ,含有一些属性(toString)
- 创建函数的原型 #202 (call/apply等),原型
__proto__
为 #101 - 创建数组的原型 #303(push/pop等)原型
__proto__
为 #101 - 创建Function #404 原型
__proto__
为 #202 - 用 Function.prototype 存储函数的原型,为 #202
此时Function.__proto__ 与Function.prototype 都为 #202
- 用 Function 创建 Object
- 用 Object.prototype 存储对象的原型,为**#101**
- 用 Function 创建 Array
- 用 Array.prototype 存储数组的原型,为**#303**
- 创建 window 对象 (不属于JS世界)
- 用 window 的“Object” “Array”属性给 6条和8条中的函数命名
注意:JS 创建一个对象时,不会给这个对象名字
- 构造函数
- 用来构造对象
- 会预先存好对象的原型,原型的原型是根
- new 的时候将
对象.__proto__
指向原型
- 对象
- 所有对象都直接或间接指向根对象
- 如果对象想要分类 ,就在原型链上加一还,可以用构造函数加这一环