【发布时间】:2015-04-22 04:06:29
【问题描述】:
我正在尝试创建一个 javascript 对象来计算其上设置的属性的各种值。我已经编译了这个我想要实现的简单示例:JSFIDDLE
var obj = {};
obj.a = 2;
obj.b = 5;
obj.avg = "(obj.a + obj.b)/2";
obj.rounded = "Math.floor(eval(obj.avg))";
console.log("rounded avg: " + eval(obj.rounded));
//simulate changing properties
obj.a = Math.floor(Math.random() * 10);
obj.b = Math.floor(Math.random() * 10);
console.log("rounded avg: " + eval(obj.rounded));
上面的代码目前实现了我想要的(使用标准设置值,如 'a' 和 'b' 来计算 'avg',然后在第二次计算中使用 'avg' 'rounded')。
有没有更好的方法来实现这一点(理想情况下,只要在另一个属性中引用计算的属性时,就不需要 eval() 调用)。
我希望计算的属性像函数一样工作(每当引用它们时计算它们的值),而不是最初计算它们的值并且不改变 - 我想避免必须使用 () 来调用函数(这样我就可以以相同的方式引用普通值和计算值 - 只是通过它们的属性名称)。
【问题讨论】:
标签: javascript javascript-objects