美文网首页JavaScript 使用记录
JavaScript 继承 3 组合继承

JavaScript 继承 3 组合继承

作者: 赵者也 | 来源:发表于2017-12-15 10:01 被阅读5次

组合继承,有时候也叫做伪经典继承,指的是将原型链和借用构造函数的技术组合到一起,从而发挥二者之长的一种继承模式。其背后的思路是使用原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例属性的继承。这样,既通过在原型上定义方法实现了函数复用,又能够保证每个实例都有它自己的属性:

        function SuperColors(colorName) {
            if (typeof colorName != "undefined") {
                this.colors = ["red", "green", "blue", colorName];
            } else {
                this.colors = ["red", "green", "blue"];
            }
        }
        SuperColors.prototype.sayColors = function () {
            console.log(this.colors);
        };
        function SubColors(colorName, level) {
            // 继承属性
            SuperColors.call(this, colorName);

            this.level = level;
        }

        SubColors.prototype = new SuperColors();

        SubColors.prototype.sayLevel = function () {
            console.log(this.level);
        };

        var instance1 = new SubColors("gray", 0);
        instance1.colors.push("white");
        instance1.sayColors();
        instance1.sayLevel();

        var instance2 = new SubColors("black", 1);
        instance2.sayColors();
        instance2.sayLevel();

上述代码输出结果:

输出结果

上述代码,可以让两个不同的 SubColors 实例既分别拥有自己的属性 —— 包括 colors 属性,又可以使用相同的方法。

组合继承避免了原型链和借用构造函数的缺陷,融合了它们的优点,成为 JavaScript 中最常用的继承模式。而且,instanceof 和 isPrototypeof 也能够用于识别基于组合继承创建的对象。

相关文章

  • es5的部分继承以及es6的class

    一、JavaScript常用的原型继承方式 原型链继承 2,构造函数继承(对象冒充继承) 3,组合继承(原型链继承...

  • JavaScript 继承 3 组合继承

    组合继承,有时候也叫做伪经典继承,指的是将原型链和借用构造函数的技术组合到一起,从而发挥二者之长的一种继承模式。其...

  • javaScript 实现继承方式

    JavaScript实现继承共6种方式:原型链继承、借用构造函数继承、组合继承、原型式继承、寄生式继承、寄生组合式继承。

  • Javascript 继承

    参考:JavaScript高级程序设计(第3版) 原型链 原型式继承 寄生式继承 寄生组合式继承

  • (九)

    寄生组合式继承前面说过,组合继承是JavaScript最常用的继承模式;不过,它也有自己的不足。组合继承最大的问题...

  • JavaScript的六种继承方式

    JavaScript的几种继承方式 原型链继承 借助构造函数继承(经典继承) 组合继承:原型链 + 借用构造函数(...

  • js继承的多种方式

    《JavaScript高级程序设计》提到了6中继承方式:1.原型链继承2.借用构造函数(经典继承)3.组合继承4....

  • 【重学前端】JavaScript中的继承

    JavaScript中继承主要分为六种:类式继承(原型链继承)、构造函数继承、组合继承、原型式继承、寄生式继承、寄...

  • Js 继承

    javaScript 继承,我们也许要有好多方式,比如说原型链继承,构造继承,实例继承、组合继承、但是我们必须要理...

  • JavaScript组合继承

    组合继承(combination inheritance),有时候也叫做伪经典继承,指的是将原型链和借用构造函数的...

网友评论

    本文标题:JavaScript 继承 3 组合继承

    本文链接:https://www.haomeiwen.com/subject/ehskwxtx.html