1.概念

proto

对象特有

指向上层(创建自己的那个构造函数)的pototype

因此对象可以从 prototype 中继承属性和方法

prototype

函数特有

用于存储要共享的属性和方法

constructor

函数特有,定义在prototype里面

通过new创建实例时,该实例便继承了prototype的属性和方法


  1. 既是函数也是对象
    Object:既是对象,也是构造函数

作为对象:Object.​proto​ = Function.prototype

作为函数:Object.prototype是原型链的顶端,Object.prototype.​proto​ = null

Function:既是对象,也是构造函数

作为对象:Function.​proto​ = Function.prototype

作为函数:Function.prototype用于共享,而Function.prototype__proto__继承自Object.prototype

Array(Date...):既是对象,也是构造函数

作为对象:Array.​proto​ = Function.prototype

作为函数:Array.prototype用于共享,Array.prototype.​proto​继承自Object.prototype

普通对象Person:既是对象,也是构造函数

作为对象:Person.​proto​ = Function.prototype

作为函数:Person.prototype用于共享,Person.prototype.​proto​继承自Object.prototype

总结

原型链顶端是Object.prototype

构造函数创建的对象(Object、Function、Array、普通对象等)都是Function的实例,它们的​proto​均指向Function.prototype

除了Object,所有对象(或叫构造函数)的prototype,均继承自Object.prototype

作者:一灯

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。