繁体   English   中英

为什么我必须使用括号注释访问我的 object 属性

[英]Why do I have to access my object property with the bracket annotation

所以我有这个 object 称为项目

在此处输入图像描述

我想访问 columnOrder 属性

为什么我必须这样访问它

 for (let item in items ) {
       console.log(items[item].columnOrder)
 }

不能做

  for (let item in items ) {
      console.log(items.item.columnOrder)
    }

这样做的原因是为了访问动态 object 属性的值,我们必须使用方括号[]表示法,因为使用点表示法将简单地返回undefined ,如下所示。

例如:

 var myCar = { make: 'Ford', model: 'Mustang', year: 1969 }; console.log( myCar['make'] ) console.log( myCar.make )

这里括号[]表示法正在工作,因为我们将 object 属性作为字符串传递,并且点表示法也在工作,因为我们已经传递了在make上退出的精确 object 密钥。

但是,如果我们将键存储在变量中并尝试使用方括号和点表示法,则会发生以下情况:

 var myCar = { make: 'Ford', model: 'Mustang', year: 1969 }; var propertyName = 'make'; console.log( myCar[propertyName] ) console.log( myCar.propertyName )

您可以看到方括号表示法中的所有键都转换为字符串,除非它们是符号,因为 JavaScript object 属性名称(键)只能是字符串或符号。 因此myCar[propertyName]被评估为myCar['make'] ,它给出了正确的结果。

但是使用点表示法,它仅仅意味着您正在尝试访问myCar object 的未分配属性,该属性将始终返回undefined

在您的情况下,当您使用时:

items.item.columnOrder

这会导致如下错误:

未捕获的类型错误:无法读取未定义的属性“columnOrder”

当您尝试从undefined访问columnOrder时。

不允许使用破折号,因为它将被解释为减法运算符。 类似的帖子: javascript 属性名称中是否允许使用破折号?

暂无
暂无

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

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