簡體   English   中英

使用函數設置JavaScript對象的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM