基于原型链的继承
继承属性
继承方法
JavaScript 的继承
一、许多面向对象(OO)语言都支持两种继承的方式:接口继承和实现继承。
- 接口继承只继承方法签名,而实现继承则继承实际的方法。
- 在 JavaScript 中由于函数没有签名也就无法实现接口继承,而只支持实现继承,而且实现继承主要通过原型链来实现的。
二、官方文档对于原型链的描述:其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。
1、构造函数,原型,和实例的关系:
- 每个构造函数(只要是函数)都有一个 prototype 属性该属性指向一个对象(这个对象就是构造函数的原型对象);
- 原型对象(只要是对象)中都有一个 constructor 属性该属性指向一个构造函数;
- 而实例中都包含一个指向原型对象的内部指针
Prototype
。
2、说白了就是原型链的构建是通过将一个类型的实例赋值给另一个构造函数的原型实现的。
3、这样子类型就可以访问定义在超类型上的所有属性和方法了。
4、每个对象都有自己的原型对象,以原型对象为模板从原型对象中继承属性和方法,原型对象也可以有自己的原型并从中继承属性和方法,一层一层,以此类推,这种关系被称为原型链
5、它解释了为何一个对象会拥有定义在其他对象上的属性和方法。
真的是继承吗
一、继承意味着复制操作,然而 JavaScript 默认并不会复制对象的属性,相反,JavaScript 只是在两个对象之间创建一个关联,这样,一个对象就可以通过委托访问另一个对象的属性和函数,所以与其叫继承,委托的说法反而更准确些。