JS的三个重要公式
-
对象.proto === 其构造函数的.prototype
-
Object.prototype是所有对象的(直接或间接)原型
-
所有的函数都是由Function构造的(包括Object,Array,Function)
可能引起误解的地方
-
XXX的原型 === XXX的.proto
-
[1,2,3]是一个数组,也是一个对象,为什么他的原型是Array.prototype 而不是Object.prototype
因为Array.prototype是直接原型,Object.prototype是间接原型
即[1,2,3]的原型是Array.prototype , Array.prototype的原型是Object.prototype
- 根据公式三,我们可以得知Object是由Function构造的,那为什么Object.prototype是所有对象的原型,而不是Function
Object.prototype指向了一个地址,该地址表示的是一个对象,对象里面并不会包含另一个对象,所以Function只是构造了Object.prototype + 地址,而该地址表示的对象,则是JS一出生就含有的。
所以说,所有的对象都是由Object.prototype构造出来的。
注意点:上图中 #58 #24 #66 #146 #268 #306 是没有名字的,只不过window将其地址付给了一个变量,他们才有了名字
参考资料来源:饥人谷