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

Javascript 如何在对象上保留表达式';s参数,以便我可以重新评估它,javascript,expression,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已经改变了

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

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]);
} 

for(var i=0;i您可以使用函数数组:

pool.push(function() { return {a:X+Y,b:X*Y,c:X-Y,...}; });
然后,您可以随时调用这些函数以获得当前结果


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

谢谢。这可能是一个选项。将表达式存储为字符串并使用eval()如何?@Hismail:这是个坏主意;它速度慢且容易出现安全漏洞。