开发者社区> 问答> 正文

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,错在哪里?

展开
收起
小旋风柴进 2016-06-01 12:59:59 2249 0
1 条回答
写回答
取消 提交回答
  •  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就能修改的,更改不了

    2019-07-17 19:23:06
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript异步编程 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载