2015-02-24 31 views
2

在Chrome開發者控制檯時,舊的對象,如果我這樣做:爲什麼不能引用創建一個新的

obj1 = Object({"a":"b"}) 

我可以這樣做:

obj1.a 
// -> "b" 

但我做不到這樣做:

Object({obj1.a:"c"}) 
// -> throws "Uncaught SyntaxError: Unexpected token ." 

爲什麼?

+0

您不需要'對象'。 JS中的對象只是'{}'。第二種語法無效。 'var obj = {a:'b'}; obj.a ='c'' – elclanrs 2015-02-24 04:01:41

回答

3

語法錯誤是因爲無法直接使用該表示法評估對象鍵。你不得不做這樣的事情:

obj2 = {}; 
obj2[obj1.a] = 'c'; 
obj2[obj1.a]; 

欲瞭解更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects

什麼是在更深的層次回事是{ }語法使用對象初始化來構造對象。語法的屬性名稱需要a name, a number, or a string literal。另一個物體的評估不符合此要求。

0

因爲那是尷尬的語法。在最後一行wony中的Obj1.c被評估爲一個變量。它只接受屬性名稱。 Obj1.c不是屬性的有效名稱

相關問題