美文网首页前端杂货随记
javascript继承之寄生组合式继承(六)

javascript继承之寄生组合式继承(六)

作者: 程序蜗牛 | 来源:发表于2018-02-04 21:44 被阅读1次

    通过借用构造函数来击沉属性,通过原型链的混成形式来继承方法。
    不必为了指定子类型的原型而调用超类型的构造函数,我们只是需要一个超类型的副本。实际上是来继承超类型的原型,然后将结果指定给子类型的原型。

    • 基本模式
    function inheritPrototype(subType,superType){
        // 创建一个超类的副本
        var prototype = Object.create(superType.prototype);
        
        // 为副本添加构造函数指向
        prototype.constructor = subType;
    
        // 将副本赋值给子类的原型
        subType.prototype = prototype;
    }
    
    • 创建一个超类函数
    unction Car(color){
        this.color = color;
        this.colorArray = ["黑色","白色","红色","蓝色"]
    }
    
    Car.prototype.getMessage = function(){
        console.log(this.color);
    }
    
    • 创建一个子类函数
    function Audi(color,year){
        Car.call(this,color);
        this.year = year;
    }
    
    • 使用寄生继承
    inheritPrototype(Audi,Car);
    
    Audi.prototype.sayYear = function(){
        console.log(this.year);
    }
    
    • 实例继承测试
    var car1 = new Audi("黑色","2015");
    car1.sayYear(); // 2015
    console.log(car1.colorArray);// [ '黑色', '白色', '红色', '蓝色' ]
    

    相关文章

      网友评论

        本文标题:javascript继承之寄生组合式继承(六)

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