关于在对象[Object]中添加属性-小记
1.对象中的属性(key)只能有字符串和符号(symbol)两种类型
//js代码
const obj = {}
obj[0] = 1
obj['0'] = 2
obj[{}] = 3
console.log(obj)
打印出obj为{ '0': 2, '[object Object]': 3 }
也就是说,所有的key都是字符串类型的,就算你传入的key不是字符串,对象也会将这个key自动转换成字符串类型,这也就是为什么obj['0']覆盖了obj[0]
*[符号的使用我在平时的练习或开发中没遇到过,这里只提一嘴,并不将这种情况加到测试demo中,仅做个记录]
数组也同理
数组本质上也是对象,所以当有数组arr = []时,arr[0] = 1和arr['0'] = 10操作的是一个元素
2.在对象中添加属性,属性的排序问题
这属于js引擎内部的一个优化措施:
虽然属性类型只接受【字符串】和【符号】两种
但如果字符串的内容是数字类,它们都会放在对象中提前的位置,并且升序排列,而其他类则按照添加顺序放在数字型的后面。
上实例:
const obj = {}
obj.a = 1
obj['3'] = 2
obj.b = 3
obj[0] = 4
console.log(obj)
打印出来的结果是{ '0': 4, '3': 2, a: 1, b: 3 },证明了对象内属性排列确实如此

浙公网安备 33010602011771号