2010-11-11 47 views
1

鑑於以下代碼:JavaScript的雜技:如何在一個字符串中聲明一個數組,元素和屬性

eval('(mapping.' + binding.field + ' = eval("extVar"))'); 

其中binding.field = "LPP[0].price"(字符串)和 extVar"LPP[0].price"相同的值

你怎麼能編程上面的語句來結束:

mapping.LPP[0].price = LPP[0].price; 

時mapping.LPP是尚未定義?此代碼循環遍歷Microsoft JQuery模板,將變量名稱作爲來自tempaltes的字符串。當我們引用數組中的屬性時,它會根據此代碼拋出。它說mapping.LPP [0]沒有定義。

+0

'eval' within'eval' o_O – kennytm 2010-11-11 18:23:41

+5

無論你在做什麼,你可能都需要爲此而被槍殺。無論如何,+1對於某些事物而言是有趣的。 – ThiefMaster 2010-11-11 18:31:12

+0

eval'中的'eval'內的'eval'中的eval是什麼? ... Limbo:D – 2010-11-11 18:47:44

回答

1
if(!mapping.LPP) mapping.LPP = []; 
mapping.LPP[0].price = LPP[0].price; 
+0

非常酷。我在另一個問題上對這個問題進行了討論,這個問題也很相似,但是詢問如何從代碼中移除eval語句。 http://stackoverflow.com/questions/4159747/javascript-acrobatics-this-code-uses-eval-how-to-remove-it – 2010-11-11 22:14:59

+0

很高興我能幫忙:-)另外,Invader Zim很棒。 – machineghost 2010-11-13 06:17:52

相關問題