JavaScript 继承

继承

有以下两种基本方法可以实现继承:

 

一、原型链

 

优点: 原型链可实现对原型属性和方法的继承(多个子类实例共享)

→ 函数复用

 

例:

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);

 

posted @ 2016-12-27 15:04  dreamerjdw  阅读(113)  评论(0编辑  收藏  举报