我正在尝试使用多个方法创建一个对象,但我想要一些方法来使用同一对象中的其他方法。这是一个例子:
var myObj = {
sum: function (a,b) {
return a + b;
},
somethingThatUsesSum: function (a,b) {
return this.sum(a,b) * 5;
}
};
如果按以下方式调用,则此“有效”:
myObj.somethingThatUsesSum(1, 2);
因为this
设置为myObj
。但是,如果您使用apply,则除非您明确将this
设置为myObj
,否则它无效。
我不喜欢在this
中使用somethingThatUsesSum
,但我想知道是否有更好的方法。
我知道我可以创建一个带有本地函数sum
的闭包,可以被myObj
中的两个函数使用,但是我想知道是否有更接近上面提出的方法的方法。
答案 0 :(得分:0)
var myObj = {
sum: function (a,b) {
return a + b;
},
somethingThatUsesSum: function (a,b) {
return myObj.sum(a,b) * 5;
}
};
myObj.somethingThatUsesSum.apply(0,[3,5])// Or ...UsesSum.call(0,3,5)
// => 40
//0 stands for "I don't care what this is invoked on"