文章极短,没有图!
1.概念
__proto__
- 对象特有
- 指向上层(创建自己的那个构造函数)的pototype
- 因此对象可以从 prototype 中继承属性和方法
prototype
- 函数特有
- 用于存储要共享的属性和方法
constructor
- 函数特有,定义在prototype里面
- 通过new创建实例时,该实例便继承了prototype的属性和方法
2. 既是函数也是对象
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
希望这篇简短的文章可以帮助你彻底理解原型链,如果觉得文章有用,点赞鼓励一下吧~