玩笑过后

导航

寄生组合式继承

复制代码
<script>
    /*
        *寄生式继承 继承原型
        *传递参数 subClass    子类
        *传递参数 superClass 父类
    */
    //宿主
    function inheritObject(o){
        function fn(){}
        fn.prototype = o;
        return new fn
    }
    //继承转换原型和构造函数
    function inheritPrototype(subClass,superClass){
        var p = inheritObject(superClass.prototype);
        p.constructor = subClass;
        subClass.prototype = p;
    }
    //父级构造函数
    function superClass(name){
        this.name = name;
        this.colors = ['red','blue','green'];
    }
    //父级的原型
    superClass.prototype.getName = function(){
        console.log(this.name);
    }
    //子级构造函数
    function subClass(name,time){
        superClass.call(this,name);
        this.time = time;
    }
    //子级继承父级的原型
    //先函数转换,然后进行实例化
    //或者先实例化,然后用__proto__属性进行转换(__proto__不建议使用)
    inheritPrototype(subClass,superClass);
    //给子级原型添加功能
    subClass.prototype.getTime = function(){
        console.log(this.time);
    }
    var b1 = new subClass('car',2018);
    console.log( b1 );
    b1.getName();
  </script>
复制代码

posted on   玩笑过后  阅读(103)  评论(0编辑  收藏  举报

努力加载评论中...
点击右上角即可分享
微信分享提示