Javascript 使用同一对象中其他函数的对象函数

Javascript 使用同一对象中其他函数的对象函数,javascript,Javascript,我试图用多个方法创建一个对象,但我希望一些方法使用来自同一对象的其他方法。以下是一个例子: var myObj = { sum: function (a,b) { return a + b; }, somethingThatUsesSum: function (a,b) { return this.sum(a,b) * 5; } }; 如果您将其称为以下内容,则此“有效”: myObj.somethingThatUsesSum(1

我试图用多个方法创建一个对象,但我希望一些方法使用来自同一对象的其他方法。以下是一个例子:

var myObj = {
    sum: function (a,b) {
        return a + b;
    },
    somethingThatUsesSum: function (a,b) {
        return this.sum(a,b) * 5;
    }
};
如果您将其称为以下内容,则此“有效”:

myObj.somethingThatUsesSum(1, 2);
因为
设置为
myObj
。但是,如果使用apply,除非将
this
显式设置为
myObj
,否则它不起作用

我不喜欢在状态中使用
这个
,但我想知道是否有更好的方法


我知道我可以用一个本地函数
sum
创建一个闭包,该闭包可以被
myObj
中的两个函数使用,但我想知道是否还有其他方法更接近上面提出的方法。

如Pointy所说,这就是Javascript的工作方式,但在这种情况下,您可以这样做(经过测试):


这就是JavaScript的工作方式。极不推荐的
with
语句提供了一种避免显式引用
this
的方法,但它还有其他问题。谢谢。我原以为是这样的,但我想知道我是否遗漏了一些可以导致简化解决方案的内容。您使用apply的场景是什么?其他代码可以使用apply调用此函数,然后除非它们将myObj作为第一个参数传递给apply,否则它将无法工作。对我来说,这似乎是一种代码味道。请将
视为“当前对象”。您可以将函数应用于另一个对象,只要它还有一个
sum
方法。
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"