《JS总结》

60 阅读2分钟

1.      拨乱反正

最重要的知识

第一个重要公式:JS公式

对象.proto===其构造函数.prototype

JS唯一的公式 如果不会就套公式

 

第二个最重要知识:根公理

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

加了一个直接或间接,所谓公理就是规定好的

 

第三个重要知识:函数公理

所有函数都是由Function构造的

任何函数.proto===Function.prototype

任意函数包括Object/Array/Function

 

乱一

XXX的原型

{name:’frank’}的原型:Object.prototype

[1,2,3]的原型  Array.prototype

Object的原型  Function.prototype

 

解读:

Object的原型是Object.proto

 

的原型 这三个字等价于.proto

中文的原型无法区分 下划线proto和prototype

所以我们只能约定 原型默认表示为下划线proto

只不过下划线proto正好等价于某个函数的prototype

 

乱二

错误观点:[1,2,3]的原型是Array.prototype

Object.prototype是所有对象的原型

那为什么Object.prototype不是[1,2,3]的原型

对以上三句话做一个解释

原型分两种:直接原型和间接原型

对于普通对象来说,Object.prototype是直接原型

对于数组函数来说:Object.prototype是间接原型

 

乱三

错误观点:Object.prototype不是根对象

错误的分析:Object.prototype是所有对象的原型,Object是Function构造的

所以Function构造了Object.prototype,推论:Function才是万物之源

错在哪里:

Object.prototype和Object.prototype对象的区别  左边的是地址

上述所说Function构造了Object.prototype 实际上知识构造出了一个地址

对象里面从来都不会包含另一个对象

总结:

构造函数:

是用来构造对象的

会预先存好对象的地址,原型的原型是根

new的时候将对象的下划线p指向原型

对象:

所有对象都直接或间接指向根对象

如果对象需要分类,就在原型链上加一环

用构造对象可以加这一环

思考:

如果加了一环之后 想再加一环怎么办

以后会在继承里讲