继承
有以下两种基本方法可以实现继承:
一、原型链
优点: 原型链可实现对原型属性和方法的继承(多个子类实例共享)
→ 函数复用
例:
function SuperType() {} SuperType.prototype.sayHello = function() { alert('Hello!'); }; function SubType() {} SubType.prototype = new SuperType(); Subtype.constructor = SubType; var instance1 = new SubType(); var instance2 = new SubType();
instance1 和 instance2共享父类方法sayHello()
二、借用构造函数
优点:可实现实例属性的继承
→ 确保每个实例都有它自己的属性
例:
function SuperType(name) { this.name= name; } function SubType(name, age) { SuperType.call(this, name); this.age = age; } var instance1 = new SubType('Mike', 18); var instance2 = new SubType('Mary', 17);
instance1和instance2都拥有自己的属性name
因此,融合以上两种方式,成为了最常用的继承模式:
组合模式
function SuperType(name) { this.name= name; } SuperType.prototype.sayHello = function() { alert('Hello!'); }; function SubType(name, age) { SuperType.call(this, name); this.age = age; } SubType.prototype = new SuperType(); SubType.prototype.constructor = SubType; var instance = new SubType('Mike', 18);