关于在对象[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] = 1arr['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 },证明了对象内属性排列确实如此

posted @ 2025-08-09 11:01  wenerda  阅读(8)  评论(0)    收藏  举报