理解对象原型

73 阅读1分钟

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

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

所有函数(Object/Array/Function).proto === Function.prototype

注意:一般问什么的原型指的是xxx.proto

Object是由Function构造出来的,为什么Object.prototype是所有对象的原型,而不是Function.prototype呢?

  1. 最初开辟空间存放(即创建)Object.prototype对象、Function.prototype对象、Array.prototype对象,并且每个原型里的方法,都一一实现

    并且,存放(即创建)构造函数对象Function

  2. 通过Function创建Object,即将Object对象的各种属性放在内存中(对应解释,Object是Function创建的),指明对象的__proto__指向Function.prototype

    通过Function创建Array,即将Array对象的各种属性放在内存中,指明Array的__proto__指向Function.prototype

  3. 创建Window对象,其中包含属性Object、Array、Function

    理解JS创建对象,就是开辟一块内存空间,存放对象的值,而没有取名字。是先有了具体内容再有了名字

    prototype.png

    从上面图中,印证了

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

    Object.prototype.proto 是 null

    所有函数(Object/Array/Function).proto === Function.prototype