2012-08-15 43 views
1

我想要做的JavaScript以下的,但有一些事情我不理解這裏的語法:如何改寫元素的JavaScript對象數組

var theObj = { foo: val1, bar: val2 } 
if (condition) { 
    theObj[foo] = newVal 
    return theObj // returns { foo: val1, bar: newVal } 
} 
return theObj // returns { foo: val1, bar: val2 } 
+0

我知道那兒有一個語法錯誤,哎呦,現在明白了! – Brian 2012-08-15 15:46:08

回答

4

你有什麼是不是一個對象數組 ,而是一個對象字面值。通常,它的屬性將被作爲theObj.property訪問,但是當您需要對屬性名稱(如theObj["property_" + numberVar])執行像字符串處理這樣的操作時,JavaScript提供了另一種語法theObj["property"],或者對於點表示法中無效的屬性(如數字屬性theObj[12] = "twelve"

如果您通過[]訪問該屬性,則需要引用字符串["foo"],否則解析器將查找名爲foo的變量以在其中插入。但是,使用點符號可以更好地訪問這個簡單的字符串屬性:

if (condition) { 
    theObj.foo = newVal 
    return theObj // returns { foo: val1, bar: newVal } 
} 
+0

當訪問內容無效時,還需要進行括號訪問:var obj = {1e5:3};警報(OBJ [1E5])' – Esailija 2012-08-15 15:49:08