拨乱反正
最重要的知识
第一个重要公式: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指向原型 - 对象:
所有对象都直接或间接指向根对象
如果对象需要分类,就在原型链上加一环
用构造对象可以加这一环 - 思考:
如果加了一环之后 想再加一环怎么办
以后会在继承里讲
本文为张歆辉的原创文章,著作权归本人和饥人谷所有,转载务必注明来源