Appearance
{ key: value }
任何一个对象都具备以下特点
- 1.由零到多组键值对组成的,用逗号分隔,并且键不能重复
- 2.属性名的类型是字符串/Symbol。属性值可以是任何类型
- 3.属性名不能是引用数据类型(会被 String() ),如果非要让 key 是对象,只能基于 ES6 中的 Map 处理
- 4.设置属性名和属性值,属性名不能重复,如果已经存在,会修改属性值
js
const obj = {
// 'name'
name: 'Tom',
// '0'
0: 100,
// symbol
[Symbol()]: 100
}取值
对象.属性名
- 属性名是数字, 报错
- 属性名是其他, 都被当成字符串, 直接找
对象[属性名]
- 1.属性名是字符串, 直接找
- 2.属性名是非字符串的其他基本数据类型, 转为字符串查找
- 3.属性名是引用数据类型, 通过toString转化为字符串查找
- 4.属性名不是值而是变量, 将变量存储的值作为属性名按照上述规则查找查找
js
const o = {
0: 'A',
true: 'B',
'[object Object]': 'D'
}
const b = {}
o[0] // 'A'
o['0'] // 'A'
o[true] // 'B'
o[b] // 'D'删除属性
- 真删除: 把属性彻底删除, delete obj.xxx
- 值删除: 属性还在,但值为空 obj.xxx = null
js
let n = 100
let obj = {}
obj.n = 200 // { n: 200 },n的数据格式是字符串
obj['n'] = { n: 200 } // 同上
obj[n] = 200 // { 100: 200 }, 100 的数据格式是字符串
obj[m] = 200 // 报错 m is not defined