我正在尝试使用 jquery 扩展来模拟继承,但据我所知,它仅适用于对象。
我想要完成的是:
var baseDefinition = function() {
var self = this;
self.calc1 = function() {
return "something1";
}
self.calc2 = function() {
return "something2";
}
self.myObject = {
propA = 100;
propB = 200;
};
}
var derivedDefinition = function() {
var self = this;
self.calc2 = function() {
return "something different from base";
}
self.myObject = {
propB = 400;
};
}
var instance = $.extend(true, {}, baseDefinition, derivedDefinition);
因此,我希望从基本定义创建一个新实例,其中派生定义将应用于基本定义,但两个定义都不会被“触及”。可能吗?
我希望避免任何原型,所以基本上我想在不知道它是否被覆盖的情况下调用 instance.calc1 或 instance.calc2。
编辑:
在我的示例中,我没有包含任何导致我使用 jquery 扩展功能的对象属性。尽管两个答案都解决了内部函数“继承”,但它(显然)没有像 extend 那样合并对象属性。作为一种可能的解决方案,我在创建实例以循环遍历实例的属性并在它们上应用 jquery 的扩展后正在考虑。尽管这对我来说似乎效率低下,但我不知道您是否可以就另一种行动方案给我建议。