如何在对象的参数上保留表达式,以便我可以重新评估它

时间:2013-07-08 13:47:37

标签: javascript expression

问题很简单。假设我定义了一个数组和两个全局变量。伪代码:

var X;
var Y;
var pool=[];

随着时间的推移,这个数组随机填充了对象。

pool.push(Object1={a:X+Y,b:X*Y,c:X-Y,...});
pool.push(Object2={a:X/Y,b:X+2*Y,c:X-Y,...});
pool.push(ObjectN={a:X+8*Y,b:X*Y,c:X-Y,...});

问题是我需要定期重新评估每个对象的a,b,c参数,因为X和Y已经改变。

for(var i=0;i<pool.length;i++){
   reevaluate(pool[i]);
} 

有没有办法重新评估a,b,c ...参数而无需重新定义它们并使每个对象不同?换句话说,有没有办法保留原始表达式?

1 个答案:

答案 0 :(得分:0)

您可以使用一系列函数:

pool.push(function() { return {a:X+Y,b:X*Y,c:X-Y,...}; });

然后,只要您想获得当前结果,就可以调用这些函数。

您可能想要维护两个数组;一个用于函数,一个用于当前缓存的值。