`
wyf
  • 浏览: 436623 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
社区版块
存档分类
最新评论

组合继承

    博客分类:
  • JS
 
阅读更多
function SuperType(name){
 this.name = name;
 this.colors = ["red", "blue", "green"];
}
SuperType.prototype.sayName = function(){
 alert(this.name); 
};
function SubType(name, age){
 //继承属性
 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("Nicholas", 29);
instance1.colors.push("black");
alert(instance1.colors); //"red,blue,green,black"
instance1.sayName(); //"Nicholas";
instance1.sayAge(); //29
var instance2 = new SubType("Greg", 27);
alert(instance2.colors); //"red,blue,green"
instance2.sayName(); //"Greg";
instance2.sayAge(); //27 

 在这个例子中,SuperType 构造函数定义了两个属性:name 和 colors。SuperType 的原型定义 了一个方法 sayName()。SubType 构造函数在调用 SuperType 构造函数时传入了 name 参数,紧接着 又定义了它自己的属性 age。然后,将 SuperType 的实例赋值给 SubType 的原型,然后又在该新原型 上定义了方法 sayAge()。这样一来,就可以让两个不同的 SubType 实例既分别拥有自己属性——包 括 colors 属性,又可以使用相同的方法了。 组合继承避免了原型链和借用构造函数的缺陷,融合了它们的优点,成为 JavaScript 中最常用的继 承模式。而且,instanceof 和 isPrototypeOf()也能够用于识别基于组合继承创建的对象。

分享到:
评论

相关推荐

    【JavaScript源代码】简单谈谈JavaScript寄生式组合继承.docx

    ### JavaScript寄生式组合继承详解 #### 一、引言 在JavaScript中,对象继承机制是一种非常重要的设计模式。常见的继承方式包括原型链继承、构造函数继承等。今天我们要探讨的是寄生式组合继承——一种结合了原型...

    js寄生组合继承示例

    JavaScript寄生组合继承实现代码示例

    03_组合继承.html

    03_组合继承.html

    再论组合和继承

    在编程世界中,继承和组合是面向对象编程的两种核心机制,它们允许我们设计出灵活、可重用的代码结构。本文将深入探讨这两种概念,特别是在C++编程语言中的应用。 首先,让我们来理解“继承”(Inheritance)。继承...

    js代码-寄生组合继承方式

    "寄生组合继承"是一种优化的继承策略,它结合了"原型链继承"和"构造函数继承"的优点,避免了它们各自的缺点。这种模式被广泛认为是JavaScript中最有效的继承模式。 首先,我们来理解“寄生”和“组合”的含义。...

    javascript中最常用的继承模式 组合继承

    组合继承是JavaScript中实现对象继承的一种方式,它结合了原型链继承和构造函数继承的优点,同时规避了它们各自的缺点。在组合继承中,可以通过两种不同的方式利用原型链和构造函数: 首先,原型链是实现继承的主要...

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

    寄生组合式继承是组合继承的升级版,它不仅避免了组合继承中的两次调用父构造函数的缺陷,而且大大减少了不必要的执行时间,因此能够有效提高程序的性能。实际上,这种方式接近于理想中的继承方式:只调用一次父构造...

    Javascript组合继承方法代码实例解析

    组合继承是JavaScript中实现继承的一种常见方式,它结合了原型链继承和构造函数继承的特点,以充分利用两者的优点。在组合继承中,子类型能够继承父类型的属性和方法,并且每个实例都有自己的属性,不会因为共享而...

    js代码-JS的继承 1、原型继承 2、构造函数的继承 3、组合继承 4、原型式继承 5、寄生式继承 6、寄生式组合继承

    结合了寄生式继承和组合继承,子类的构造函数会调用父类的构造函数来获取属性,同时使用原型链来继承方法。这是JavaScript中效率最高且最常用的继承方式,避免了重复属性和方法,但仍有额外的函数调用开销。 在...

    JavaScript类的继承方法小结【组合继承分析】

    组合继承是实现继承的一种常用模式,它结合了原型链继承和借用构造函数(经典继承)两种方式的优点,以解决JavaScript中继承的一些问题。 在JavaScript中,继承主要是通过原型链实现的。每个函数都有一个原型对象,...

    js代码-组合继承(原型链继承+构造函数继承)

    在JavaScript中,组合继承是一种常见的继承模式,它结合了原型链继承和构造函数继承的优点,以实现更灵活的对象创建和复用。这种模式是通过在子类构造函数中调用父类构造函数来继承属性,然后通过原型链来继承方法。...

    实例介绍JavaScript中多种组合继承

    本文将详细介绍JavaScript中的几种组合继承方式,包括它们的原理、优缺点以及如何实现。 1. **组合继承**:这是JavaScript中最常用的继承模式,它结合了原型链和构造函数的特性。在组合继承中,子类通过构造函数调...

    js代码-es5组合继承

    在JavaScript的世界里,ES5(ECMAScript 5)是一种广泛使用的版本,它引入了许多特性,其中一种重要的设计模式就是组合继承。组合继承是通过借用构造函数来实现原型链的继承,同时结合了原型链继承和原型式继承,以...

    JS继承.txtJS继承.txt

    JavaScript支持多种继承机制,包括原型链继承、构造函数继承、组合继承、寄生式继承以及寄生组合继承等。接下来,我们将详细探讨这些继承方式。 ### 1. 原型链继承 原型链继承是通过将一个对象设置为另一个对象的...

    js代码-组合继承1

    在JavaScript中,组合继承是一种常见的继承模式,它结合了原型链继承和构造函数继承的特点,以实现更灵活的对象创建和共享属性。在这个“js代码-组合继承1”的示例中,我们将深入探讨这一主题。 首先,让我们理解...

    JS 面向对象之继承—多种组合继承详解

    1. 组合继承:又叫伪经典继承,是指将原型链和借用构造函数技术组合在一块的一种继承方式。 下面来看一个例子: function SuperType(name) { this.name = name; this.colors = ["red", "blue", "green"]; } ...

    10丨理论七:为何说要多用组合少用继承?如何决定该用组合还是继承?1

    其中,“组合优于继承”是一条广为流传的原则,意味着在设计软件时,我们应该优先考虑使用组合(Composition)而不是继承(Inheritance)。这条原则的提出主要是为了解决继承带来的潜在问题,如代码的可维护性、可...

Global site tag (gtag.js) - Google Analytics