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

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

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容