2009-11-21 90 views
0

我試圖初始化一些JavaScript對象內動態的一些數據值,但是當我創建一個串聯的字符串傳遞時,實際存儲的密鑰是​​變量名稱,而不是它內部的值。值是變量名稱而不是變量的內容

例子:

projects.init = function(){ 
    for (var i = this.numBoxes - 1; i >= 0; i--){ 
     var toInject = "item"+i; 
     this.datas[i] = {toInject:"testdata"}; 
    }; 
} 

然後調用初始化後,裏面projects.datas值樣子.. toInject 「TESTDATA」,而不是被 「物品1」 ...... 「ITEM2」 ......什麼我做錯了嗎?

回答

6

你應該建立你的對象分兩個步驟,並用括號標記property accessor

projects.init = function(){ 
     for (var i = this.numBoxes - 1; i >= 0; i--){ 
       var toInject = "item"+i, 
        obj = {}; 

       obj[toInject] = "testdata"; 
       this.datas[i] = obj; 
     }; 
} 

的對象文本標籤不能表達。

正如你所看到的,首先你宣佈一個空object literal

var obj = {}; 

然後設置屬性:

obj[toInject] = "testdata"; 
+0

是否有更詳細的解釋這個參考?我確信這是有效的,但很高興知道爲什麼;) – dmp 2009-11-21 18:17:42

+0

obj [toInject]就像是在說eval(「obj。」+ toInject);它將該屬性設置爲變量toInject中的名稱。 :D – 2009-11-21 18:20:48

+0

感謝您的更新,完美。 – dmp 2009-11-21 18:20:50

相關問題