如何将函数的结果存储在同一对象中?

时间:2017-10-29 00:46:31

标签: javascript

问题:我创建了一个包含2个命名值的对象。一个是函数,另一个是函数产生的值。我的问题是我无法弄清楚第二个命名值的语法。我该如何参考?我到处寻找,但我无法找到一个类似的示例对象,我可以从中学习。非常感谢!

var answer = {
    addNumbers: function(a, b, c) {
        return a + b + c;
    },
    result: answer.addNumbers;  //I'm not sure what the syntax is for this line.
};

3 个答案:

答案 0 :(得分:1)

您可以接受以下内容吗?

var addNumbers = function(a, b, c) {
    return a + b + c;
}
var answer = {
    addNumbers: addNumbers,
    result: addNumbers(...)
};

可替换地:

var answer = {
    addNumbers: function(a, b, c) {
        return a + b + c;
    }
};
answer.result = answer.addNumbers(...);

答案 1 :(得分:1)

我没有真正得到你想做的事情,但是如果你想在每次执行函数时存储结果,你可能想要做这样的事情:

var answer = {
    addNumbers: function(a, b, c) {
        this.result = a + b + c;
        return this.result;
    },

    result:0
};

我想我会稍微解释一下JSON:

通常,您只列出了许多属性。在这里,我们指定addNumbersresult并为其指定值。

addNumbers的值是Function - 对象(因此可调用),result的值是Number - 对象(0情况)。

您现在可以通过调用addNumbers来执行answer.addNumbers(1,2,3)。发生这种情况时,函数体的{}之间的所有内容都会被执行,包括this.result的新分配。

此主题还有更多内容,特别是在几种情况下如何解决this,但这超出了此答案的范围。

答案 2 :(得分:1)

函数的最后一个结果也可以存储在函数对象中:



function addNumbers(a, b, c) {
    addNumbers.result = a + b + c
    return addNumbers.result
}

addNumbers(1,2,3)

console.log(addNumbers.result)




否则,可以通过执行接受另一个函数并返回对象的函数来实现:



var result = (function(f, a, b, c) { 
  return {
    addNumbers: f,
    result: f(a, b, c)
  }
})(function(a, b, c) { return a + b + c }, 1, 2, 3)

console.log(result)