2016-03-11 113 views

回答

35

{a:1,b:2}.constructor是不是無效的語法,但它是不明確的,因爲{}表示塊或對象?所以你必須用括號來表達歧義,例如({a:1,b:2}).constructor。現在JavaScript知道你打算使用一個對象。

如果你使用的情況下它顯然是一個對象,語法,那麼就沒有歧義:

console.log({a:1,b:2}.constructor) // works fine 
13

行首的曲線被識別爲code block而不是object literal

如果您查看控制檯中的錯誤,您可以看到Uncaught SyntaxError: Unexpected token :。所以,錯誤不在於調用構造函數屬性。

此外,當在控制檯

{a:1} 

JS其解釋爲具有一個label和不與屬性a對象的塊寫。

+0

什麼是' line'?依賴分號的語言(特別是帶有有趣規則的JS)不知道「線路」。但'; {1:2} .constructor'無效。也許你的意思是'陳述'或'表達'在'線'上? – cat

+1

@tac,yep,這裏的'語句'似乎更正確 – Grundy

相關問題