您的位置:首页 > Web前端 > JavaScript

JS 面向对象之继承--多种组合继承

2013-02-01 20:30 441 查看
这一次要讲 组合、原型式、寄生式、寄生组合式继承方式。

1. 组合继承:又叫伪经典继承,是指将原型链和借用构造函数技术组合在一块的一种继承方式。

下面来看一个例子:

View Code

//继承原型
function extend(subType, superType) {
function F(){};
F.prototype = superType.prototype;

var prototype = new F;
prototype.constructor = subType;
subType.prototype = prototype;
}

//超类方法
function SuperType(name) {
this.name = name;
this.colors = ["red", "blue", "green"];
}
SuperType.prototype.sayName = function() {
return this.name;
}

//子类方法
function SubType(name, age) {
SuperType.call(this, name);
this.age = age;
}

//继承超类的原型
extend(SubType, SuperType);

//子类方法
SubType.prototype.sayAge = function() {
return this.age;
}

var instance1 = new SubType("Shelby");
var instance2 = new SubType("Court", 28);

instance1.colors.push('black');

alert(instance1.colors); //red,blue,green,black
alert(instance2.colors); //red,blue,green

alert(instance1 instanceof SubType); //true
alert(instance1 instanceof SuperType); //true


这段例子的高效率体现在它只调用了一次SuperType构造函数,并且因此避免了在SubType.prototype上面创建不必要的多余的属性。与此同时,原型链还能保持不变。因此,还能正常使用instanceof 和 isPrototypeOf()。开发人员普遍认为寄生组合式继承是引用类型最理想的继承范式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: