所以我要从一个文件中导出一个对象,并试图继承它的所有方法并添加

function childClass (model) {
this.model = model
}

childClass.prototype.foo1 = function(){
this.model.Something1();
}

childClass.prototype.foo2 = function(){
this.model.Something2();


}

理想情况下,当有人从childClass实例化一个对象时,我希望它可以从该类使用的基础模型对象继承所有方法,以使不必调用obj.model.function1即可调用obj.function1。

最佳答案

您可能正在寻找一种委托模式,可以将其实现为:

defineDelegate(delegatee, method) {
    childClass.prototype[method] = function() {
        var delegatee = this[delegatee];
        return delegatee[method].apply(delegatee, arguments);
    };
}


现在你可以说

defineDelegate('model', 'Something1');
defineDelegate('model', 'Something2');


这将需要清理和推广,但我希望您能理解。

如果出于某种原因要委托model上的所有方法:

Object.keys(modelClassPrototype)
    .filter (function(k) { return typeof modelClassPrototype[k] === 'function'; })
    .forEach(function(k) { defineDelegate('model', k); })
;

关于javascript - 如何从类构造函数中的参数继承方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26727042/

10-16 06:56