オブジェクトリテラルのプロパティに直接アクセスできないのはなぜですか?
[1,2].constructor
が有効であるのに対し、次の構文
{a:1,b:2}.constructor
は、無効であるのはなぜ?
オブジェクトリテラルのプロパティに直接アクセスできないのはなぜですか?
[1,2].constructor
が有効であるのに対し、次の構文
{a:1,b:2}.constructor
は、無効であるのはなぜ?
{a:1,b:2}.constructor
は無効な構文ではありませんが、{}
はブロックまたはオブジェクトを表しているため、あいまいですか?ですから、({a:1,b:2}).constructor
のようにカッコで表現を明確にする必要があります。 JavaScriptでは、オブジェクトを使用することが分かっています。
あなたはそれが明らかにオブジェクトである状況で、その構文を使用する場合は、内容が不明確ではない場合:
console.log({a:1,b:2}.constructor) // works fine
行頭のカーブブラケットは、object literalの代わりにcode blockと認識されます。
コンソールでエラーを調べると、Uncaught SyntaxError: Unexpected token :
が表示されます。したがって、エラーはコンストラクタプロパティを呼び出すことではありません。また
、コンソール
{a:1}
JSがlabelない財産a
を持つオブジェクトを持つブロックとしてこれを解釈して書きます。
'({:1、B:2})constructor' – elclanrs