原型
在 JavaScript 中,每当定义一个对象(函数也是对象)时候,对象中都会包含一些预定义的属性。其中每个函数都有一个prototype 属性,这个属性指向函数的原型对象。该原型对象有个属性为
constructor
,指向该函数,这样原型对象
和它的函数
之间就产生了联系。使用原型对象的好处是所有对象实例共享它所包含的属性和方法。
原型链
每个对象拥有一个隐式原型对象,通过__ proto__ 指向其原型对象,并从中继承方法和属性,同时原型对象也可能拥有原型,这样一层一层,最终指向 null。
(Object.proptotype.__proto__指向的是null)。这种关系被称为原型链,通过原型链一个对象可以拥有定义在其他对象中的属性和方法。
原型和原型链的区别
原型是为了实现对象间的联系,解决构造函数无法数据共享而引入的一个属性,而原型链是一个实现对象间继承的主要方法。