【面向对象的程序设计(5)】组合继承(伪经典继承)

基本思想

将原型链和借用构造函数的技术组合到一块。
使用原型链实现对原型属性和方法的继承,通过借用构造函数实现对实例属性的继承。

function SuperType(name){
    this.name = name;
    this.colors = ["red","blue","green"];
}

SuperType.prototype.sayName = function () {
    alert(this.name);
};

function SubType(name,age){
    //继承了SuperType,同时还传递了参数
    SuperType.call(this,name);

    //实例属性
    this.age = age;
}
//继承方法
SubType.prototype = new SuperType();
SubType.prototype.constructor = SubType;
SubType.prototype.sayAge = function () {
    alert(this.age);
};

var instance1 = new SubType("Wonder",23);
instance1.colors.push("black");
alert(instance1.colors);      //red,blue,green,black
instance1.sayName();          //Wonder      
instance1.sayAge();           //23

var instance2 = new SubType("Abby",29);
alert(instance2.colors);      //red,blue,green
instance2.sayName();          //Abby
instance2.sayAge();           //29

组合继承是JS最常用的继承模式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本章内容 理解对象属性 理解并创建对象 理解继承 面向对象语言有一个标志,那就是它们都有类的概念,而通过类可以创建...
    闷油瓶小张阅读 884评论 0 1
  • 1.继承(接口继承和实现继承) 继承是 OO 语言中的一个最为人津津乐道的概念。许多 OO 语言都支持两种继承方式...
    believedream阅读 983评论 0 3
  • 博客内容:什么是面向对象为什么要面向对象面向对象编程的特性和原则理解对象属性创建对象继承 什么是面向对象 面向对象...
    _Dot912阅读 1,455评论 3 12
  • 我叫千唯唯,女,今年16岁。目前在一家甜品店打工,日子也算过的有滋有味。可是,我却莫名其妙穿越了! 昨天。“喂!...
    琉璃小粉象阅读 150评论 0 0
  • 古尔邦节中秋节送礼德力西 绿城确定方案,下周约请王总成功。 锻炼:做了 看书:做了 学习:没做 要和月薪15000...
    武允儿阅读 114评论 0 0