问题:我创建了一个包含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.
};
答案 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:
通常,您只列出了许多属性。在这里,我们指定addNumbers
和result
并为其指定值。
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)