在同一对象中使用来自其他函数的对象的函数

时间:2013-10-21 15:21:43

标签: javascript

我正在尝试使用多个方法创建一个对象,但我想要一些方法来使用同一对象中的其他方法。这是一个例子:

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中的两个函数使用,但是我想知道是否有更接近上面提出的方法的方法。

1 个答案:

答案 0 :(得分:0)

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

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"