这是我正在使用的代码,不太确定如何使用文字符号,我必须以某种方式将currentActiveCategories
传递给函数。不确定这是否是首选的方法,不想学习坏习惯。
var primaryCare = {
currentActiveCategories : [ "1", "2"],
currentValue : addValues(this.currentActiveCategories)
}
function addValues(activeCategories) {
tempTotal;
for(int i = 0; i < activeCategories.length; i++){
tempTotal += activeCategories[i];
}
return tempTotal;
}
答案 0 :(得分:2)
目前,您的对象文字会创建一个对象,其中包含两个属性currentActiveCategories
(一个数组)和currentValue
,该属性设置为调用addValues()
的结果评估对象文字的时间。您正试图使用this.currentActiveCategories
调用该函数,该函数将为undefined
,因为此时this
不等于该对象。
如果想要有一个可以随时返回当前总数的函数,你可以这样做:
var primaryCare = {
currentActiveCategories : [ "1", "2"],
currentValue : function () {
var tempTotal = "";
for(var i = 0; i < this.currentActiveCategories.length; i++){
tempTotal += this.currentActiveCategories[i];
}
return tempTotal;
}
}
primaryCare.currentValue(); // returns "12", i.e., "1" + "2"
始终使用var
声明变量,否则它们将成为全局变量 - 请注意,您无法在JS中声明int
。在开始向其中添加字符串之前,您需要将tempTotal
初始化为空字符串,或者代替"12"
获得"undefined12"
。
当您将函数作为对象的方法调用时,如primaryCare.currentValue()
(如上所示),则函数this
中的函数将被设置为该对象。
将值添加为字符串对我来说似乎有点奇怪。如果您想使用数字并获得数字总数,您可以这样做:
var primaryCare = {
currentActiveCategories : [ 1, 2], // note no quotes around the numbers
currentValue : function () {
var tempTotal = 0;
for(var i = 0; i < this.currentActiveCategories.length; i++){
tempTotal += this.currentActiveCategories[i];
}
return tempTotal;
}
}