原型
原型
- JavaScript规定,每一个函数都有一个prototype对象属性,指向另一个对象
- 构造函数通过new创建出来的实例对象,有个_ proto _ 属性指向它的原型
- prototype可以让所有对象实例共享它所包含的属性和方法,我们不用在构造函数中定义对象信息,可以直接将这些信息添加到原型中
原型链
- 实例对象与原型之间的连接,叫做原型链
- 白话:如果试图引用实例对象(Person)的某个属性,会首先在对象内部寻找该属性,若找不到,才会到实例对象的原型(Person.prototype)里寻找这个属性,如果还未找到,则往原型的原型上寻找,这样一层层查找形成一个链式的关系
原型链图如下:
由图可知的关系:
- 每个构造函数可以通过new的方式创建实例对象
- 实例对象通过_ proto _属性指向它的原型
- 原型对象有一个constructor属性指向它的构造函数
- 构造函数有一个prototype对象指向它的原型对象
- 原型对象也有自己的原型,通过_ proto _属性指向
- 构造函数也有自己的原型,通过_ proto _属性指向Function.prototype原型对象
- Function.prototype的原型是Object.prototype
js继承
js继承共有6种方式
- 原型链继承
- 借用构造函数继承(经典继承)
- 组合继承
- 原型式继承
- 寄生式继承
- 寄生组合式继承