2013-07-08 23 views
0

問題很簡單。假設我定義了一個數組和兩個全局變量。僞代碼:如何在對象的參數上保留一個表達式,以便我可以重新評估它

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 ...無需參數重新定義他們爲每個對象有什麼不同?換句話說,有沒有辦法保持原始表達?只要你想得到當前結果

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

然後,您可以調用的函數:

回答

0

可以使用的功能的陣列。

您可能想維護兩個數組;一個用於函數,另一個用於當前緩存的值。

+0

謝謝。這可能是一個選項。如何將表達式存儲爲字符串並使用eval()? – Hismail

+0

@Hismail:這是一個壞主意;它很慢並且容易出現安全漏洞。 – SLaks

相關問題