js面向对象之组合继承

作者: 前端来入坑 | 来源:发表于2018-09-10 16:22 被阅读1次

    首先先上一段代码

    function SuperType(name) {
        //父函数的自定义属性
        this.name = name;
        this.age = colors = ["red","orange","black"];
    };
    
    SuperType.prototype.sayName = function() {
         //父函数原型中定义的方法
        console.log(this.name);
    };
    
    //定义子函数
    function SubType (name,age) {
        //子函数继承父函数的属性
        //借用构造函数实现对实例属性的继承
        SuperType.call(this,name);    
        //子函数定义自己的属性
        this.age = age;
    }
    
    //子函数继承父函数的方法
    //通过原型链对原型属性和方法的继承
    SubType.prototype = Object.create(SuperType.prototype);
        //下面注释的这种写法子类会具有父类实例的方法,不推荐
        //SubType.prototype = new SuperType();
    SubType.prototype.constructor =SubType;
    
    //自定义子函数的方法
    SubType.prototype.sayAge = function() {
        console.log(this.age);
    }
    
    //测试
    var instance1 = new SubType("LLL","24");
    instance1.colors.push("pink");
    console.log(instance1.colors);//"red,orange,black,pink"
    instance1.sayName;//"LLL"
    instance1.sayAge;//"24"
    
    //测试2
    var instance2 = new SubType("XXX","25");
    console.log(instance2.colors);//"red,orange,black"
    instance2.sayName;//"XXX"
    instance2.sayAge;//"25"
    
    

    相关文章

      网友评论

        本文标题:js面向对象之组合继承

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