JS 面向对象之继承--多种组合继承
2013-02-01 20:30
441 查看
这一次要讲 组合、原型式、寄生式、寄生组合式继承方式。
1. 组合继承:又叫伪经典继承,是指将原型链和借用构造函数技术组合在一块的一种继承方式。
下面来看一个例子:
View Code
这段例子的高效率体现在它只调用了一次SuperType构造函数,并且因此避免了在SubType.prototype上面创建不必要的多余的属性。与此同时,原型链还能保持不变。因此,还能正常使用instanceof 和 isPrototypeOf()。开发人员普遍认为寄生组合式继承是引用类型最理想的继承范式。
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()。开发人员普遍认为寄生组合式继承是引用类型最理想的继承范式。
相关文章推荐
- JS 面向对象之继承---多种组合继承详解
- JS面向对象的继承三种方法:原型继承,原型冒充继承,复制继承
- 面向对象:类组合还是类继承?
- 学JS面向对象 以及里面的继承
- JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
- JS高级知识(面向对象,原型,原型链理解,继承)
- 42_面向对象_15_继承_组合
- JavaScript 面向对象(封装、继承、多态)多种方式实现完全总结
- 由模式谈面向对象的原则之多用组合、少用继承
- JS面向对象,原型,继承
- 浅析js面向对象的继承
- JS模拟面向对象全解(五、继承)
- JS原型链、继承的问题与解决:组合继承、借用构造函数(未完)
- js面向对象(json对象、继承、面向对象拖拽)
- js面向对象继承(拖拽框)
- JS面向对象,创建,继承
- JavaScript 定义类的最佳写法——完整支持面向对象(封装、继承、多态),兼容所有浏览器,支持用JSDuck生成文档
- JS-面向对象-继承
- [js高手之路]设计模式系列课程-组合模式+寄生组合继承实战新闻列表
- JS面向对象---继承