最近在和后臺(tái)聯(lián)調(diào)接口時(shí)發(fā)現(xiàn)了一些惡心的對(duì)象結(jié)構(gòu),類似這樣澎粟。
const a = {
'0': 'a',
'1': 'b',
'2': 'c',
}
當(dāng)需要取對(duì)象中的值時(shí)漓藕,只能夠通過(guò)a['0']
這種方式。而通過(guò)a.0
獲取會(huì)提示
Uncaught SyntaxError: Unexpected number
前者屬于鍵值(key)訪問(wèn)畜隶,而后者則是通過(guò)屬性(property)訪問(wèn)。在普通的對(duì)象中,使用任意方法都能夠獲取到對(duì)應(yīng)的值代箭。但通過(guò)屬性訪問(wèn)后面需要一個(gè)標(biāo)識(shí)符兼容的屬性名墩划,而通過(guò)鍵值訪問(wèn)則可以接受任意兼容UTF-8/unicode的字符串作為屬性名。
所以當(dāng)我們需要訪問(wèn)對(duì)象a的’0‘屬性時(shí)嗡综,只能通過(guò)鍵值的形式訪問(wèn)乙帮。
有意思的是,在js中极景,數(shù)組也是對(duì)象察净,數(shù)組的索引就是屬性名,所以我們會(huì)發(fā)現(xiàn)盼樟,數(shù)組的索引不是 Number 類型 而是 String 類型氢卡,數(shù)組也需要通過(guò)屬性(property)進(jìn)行訪問(wèn)。
我們可以直接使用 array[0] 的寫(xiě)法晨缴。js自動(dòng)將 Number 類型的 0 轉(zhuǎn)換成了String 類型的 "0"
const array = ['a', 'b', 'c']
console.log(array['0']) // a