使用函数设置JavaScript对象值

使用函数设置JavaScript对象值,javascript,Javascript,我试图用一个函数设置一个对象值。 从本质上讲,我试图计算对象到某一点的总值,这是传递给calculateTotal函数的limit变量 看来我做错了,有什么建议吗 var sc=0.75 com=2197.63, 用户输入=400, f11_总数=0; 变量v={ “a”:com, “b”:(com*0.06*sc), “c”:(com*0.09*sc), “d”:(215.54*数学功率(sc,2)), “e”:(299.36*sc), “f”:328.76, “g”:((com*0.048

我试图用一个函数设置一个对象值。 从本质上讲,我试图计算对象到某一点的总值,这是传递给
calculateTotal
函数的
limit
变量

看来我做错了,有什么建议吗

var sc=0.75
com=2197.63,
用户输入=400,
f11_总数=0;
变量v={
“a”:com,
“b”:(com*0.06*sc),
“c”:(com*0.09*sc),
“d”:(215.54*数学功率(sc,2)),
“e”:(299.36*sc),
“f”:328.76,
“g”:((com*0.048)*(用户输入/400)),
“h”:(com*0.01),
"3.6": 0.036,
“总计”:函数(){
计算总数(3.6);
}
};
函数计算器总计(极限){
用于(v中的变量k){
如果(k==限制)返回(f11_总计*v[k]);
f11_总计+=v[k];
}
}

控制台日志(calculateTotal(3.6))
total
成员的值设置为您定义的函数,而不是其返回值

正如@Santi所指出的,在
v
声明完成之前,我们不能在
calculateTotal
中引用
v

这里的一种方法可以是在声明
v
如下后填充
total

var v = {
  "a": com,
  "b": (com * 0.06 * sc),
  "c": (com * 0.09 * sc),
  "d": (215.54 * Math.pow(sc, 2)),
  "e": (299.36 * sc),
  "f": 328.76,
  "g": ((com * 0.048) * (user_input / 400)),
  "h": (com * 0.01),
  "3.6": 0.036  
};
v.total = calculateTotal(3.6);

主要问题是返回的是函数而不是实际值


是简洁和正确的,但是我想我会提供一个现代的替代使用

它不需要对对象进行操作/初始化,完全是自包含的,并且在修改对象时将重新计算

var sc=0.75
com=2197.63,
用户输入=400;
变量v={
“a”:com,
“b”:(com*0.06*sc),
“c”:(com*0.09*sc),
“d”:(215.54*数学功率(sc,2)),
“e”:(299.36*sc),
“f”:328.76,
“g”:((com*0.048)*(用户输入/400)),
“h”:(com*0.01),
"3.6": 0.036,
获取总数(){
变量f11_总计=0;
for(在本例中为var k){
如果(k==3.6)返回(f11_总计*此[k]);
f11_总计+=该[k];
}
}
}
console.log(“v.total=“+v.total”);
v、 f=100;
控制台日志(“f更改为100”);

console.log(“v.total=“+v.total”)问题出在哪里?
“总计”:calculateTotal(3.6)
这听起来是一个使用
get
的好机会。我意识到这个问题是“完整的”,但还是决定在拳击场上投一个备选方案。我试过了,但出于某种原因,我得到了一个
未定义的
结果,我遗漏了什么?@Jonathan.Brink我相信OP希望这个结果返回
116.886497939998
,但是上面的例子将返回
0
。并且
k==limit
将始终计算为true。这是在
“total”
@Santi之前的酒店谢谢,我错过了那里的退货声明。我更新了我的answer@Jonathan.Brink我认为
v
未定义的
,因为您在它自己的初始化中引用了
v
。一旦
k==limit
为true(我检查一下,它只返回true一次),函数就假定返回116.886。。。如果我从对象外部调用该函数,它可以正常工作。