繁体   English   中英

为什么我不能直接访问对象文字的属性?

[英]Why can't I directly access a property of an object literal?

为什么以下语法

{a:1,b:2}.constructor

是无效的,而

[1,2].constructor 

已验证?

{a:1,b:2}.constructor语法不是无效,但它不明确,因为{}表示一个块或一个对象? 因此,您必须使用括号消除歧义,例如({a:1,b:2}).constructor 现在JavaScript知道你打算使用一个对象。

如果您在明确是对象的上下文中使用该语法,则没有歧义:

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

一行开头的曲线括号被识别为代码块而不是对象文字

如果查看控制台中的错误,可以看到Uncaught SyntaxError: Unexpected token : . 因此,错误不在于调用构造函数属性。

此外,当您在控制台中写入时

{a:1}

JS将此解释为具有标签的块,而不是具有属性a的对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM