2016-03-11 26 views

cevap

35

{a:1,b:2}.constructor sözdizimi geçersiz değil, ancak belirsizdir, çünkü {} bir bloğu veya bir nesneyi gösterir? Yani, ifadeyi ({a:1,b:2}).constructor gibi parantezlerle ayırmanız gerekir. Artık JavaScript, bir nesneyi kullanmak istediğinizi biliyor.

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

Bir satırın başlangıcındaki eğri parantezler, object literal yerine code block olarak tanınır.

Konsoldaki hatayı incelerseniz, Uncaught SyntaxError: Unexpected token :'u görebilirsiniz. Bu nedenle, hata, yapıcı özelliğinin çağrılmasında değil. Ayrıca

, konsolun

{a:1} 

JS bir label değil mülkiyet a sahip bir nesne ile bir blok olarak yorumlar yazıyorum.

+0

constructor'' line'? Noktalı virgül bağımlı diller (özellikle komik kuralları ile JS) 'line's hakkında bilmiyorum. Ama '; {1: 2} .constructor' geçersiz. Belki de 'line' ifadesi mi, yoksa ifade mi demek istediniz? – cat

+1

@tac, yep, 'statement' burada daha doğru görünüyor – Grundy

İlgili konular