所以我要从一个文件中导出一个对象,并试图继承它的所有方法并添加
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/