[英]Why do I have to access my object property with the bracket annotation
這樣做的原因是為了訪問動態 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.