让前端飞

浅谈JS对象的属性访问和键值访问

2016-12-12  本文已影响402人  xiao雨痕

最近在和后台联调接口时发现了一些恶心的对象结构,类似这样。

const a  = {
  '0': 'a',
  '1': 'b',
  '2': 'c',
}

当需要取对象中的值时,只能够通过a['0']这种方式。而通过a.0获取会提示

Uncaught SyntaxError: Unexpected number

前者属于键值(key)访问,而后者则是通过属性(property)访问。在普通的对象中,使用任意方法都能够获取到对应的值。但通过属性访问后面需要一个标识符兼容的属性名,而通过键值访问则可以接受任意兼容UTF-8/unicode的字符串作为属性名。

所以当我们需要访问对象a的’0‘属性时,只能通过键值的形式访问。

有意思的是,在js中,数组也是对象,数组的索引就是属性名,所以我们会发现,数组的索引不是 Number 类型 而是 String 类型,数组也需要通过属性(property)进行访问。

我们可以直接使用 array[0] 的写法。js自动将 Number 类型的 0 转换成了String 类型的 "0"

const array = ['a', 'b', 'c']
console.log(array['0']) //  a
上一篇下一篇

猜你喜欢

热点阅读