1.概念
proto
对象特有
指向上层(创建自己的那个构造函数)的pototype
因此对象可以从 prototype 中继承属性和方法
prototype
函数特有
用于存储要共享的属性和方法
constructor
函数特有,定义在prototype里面
通过new创建实例时,该实例便继承了prototype的属性和方法
- 既是函数也是对象
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
作者:一灯
链接:https://juejin.im/post/5ccf800cf265da03b0517112
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
网友评论