[英]Set JavaScript Object value with a function
我試圖用函數設置對象值。 本質上,im會嘗試計算對象中某個特定點之前的總值,這是傳遞給calculateTotal
函數的limit
變量im。
好像我做錯了,有什么建議嗎?
var sc = 0.75 com = 2197.63, user_input = 400, f11_total = 0; 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, "total": function() { calculateTotal(3.6); } }; function calculateTotal(limit) { for (var k in v) { if (k == limit) return (f11_total * v[k]); f11_total += v[k]; } } console.log(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);
主要問題是您要返回的是函數而不是實際值。
喬納森(Jonathan)的回答簡潔明了,但是我認為我會使用get
您提供現代的替代方法。
它不需要對對象進行任何操作/初始化,完全是自包含的,並且如果/在修改對象時將重新計算。
var sc = 0.75 com = 2197.63, user_input = 400; 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, get total() { var f11_total = 0; for (var k in this) { if (k == 3.6) return (f11_total * this[k]); f11_total += this[k]; } } } console.log("v.total = " + v.total); vf = 100; console.log("f changed to 100"); console.log("v.total = " + v.total);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.