2 zzzcsd zzzcsd 于 2016.03.03 10:45 提问

Javascript,一个通用的实现类继承的函数
 var A = function() {
    this.a = 3;
}
var B = function() {
    this.b = 6;
}

function ext(A, B) {
    var subclass = B;
    //構造一個新的同名類類,用他來繼承父類,並且調用子類都構造函數
    var B = function() {
        A.apply(this.arguments);
        subclass.apply(this.arguments);
    }
    B.prototype = Object.create(new A);
    B.constructor = subclass;
    return B;
}

B = ext(A, B);
var b = new B();
console.log(b.b);

上面的代码,是想写一个通用的函数,用来实现继承
结果console中打印出来是undefined,错在哪里?

1个回答

showbo
showbo   Ds   Rxr 2016.03.03 11:43
已采纳
    function ext(A, B) {
        var subclass = B;
        //構造一個新的同名類類,用他來繼承父類,並且調用子類都構造函數
        var B = function () {
            A.apply(this);
            subclass.apply(this);
        }
                //不需要了
        //B.prototype = Object.create(new A);
        //B.constructor = subclass;///
       // console.log(B)
        return B;
    }

你传this.arguments干嘛。。肯定是apply修改A和subclass指向B的实例对象了,而且修改构造函数也不是你B.constructor = subclass就能修改的,更改不了

qq_26946497
qq_26946497 学习了。不过这比起直接在子类中指定父类有什么不一样的
接近 2 年之前 回复
zzzcsd
zzzcsd A.apply(this,arguments); subclass.apply(this,arguments); 我把,误写成.了
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!