簡體   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