JavaScript 的对象类似于其他语言的哈希结构,是一种无序的 key => value
集合,用 {}
符号表示。
// 创建 | Object 的 key 必须是 “字符串” 或者 “数字” 这种 “不可变性质” 的类型,并且不能重复,value 可以是任意的
var person = {
name: 'Ada',
age: 19
}
// 取值
console.log(person.name) // 'Ada'
console.log(person['name']) // 同上
// 赋值
person.birth = 1896
// 删除
delete person.birth
'Ada' in {'Ada': 1} // true | 验证属性是否存在
Object.keys({a: 1, b: 2}) // [a, b] | 获取 key
Object.values({a: 1, b: 2}) // [1, 2] | 获取 value
Object.assign({a:1}, {b:2}) // {a:1, b:2} | 合并,重复的 key 会被覆盖
判断一个 {}
是否是空的。
{} === {} // false | 就像 NaN !== NaN 一样,两个 {} 也不相等
{}.length // 报错 | length 是获取一个 “序列” 的长度,对象并不是序列,所以没有 length 方法
// 需要先把 {} 转换成 [],才能验证是否为空
Object.keys({}).length // 0
由于 JavaScript 的 object 类型它既是一种哈希数据结构,又是我们面向对象编程传统意义上的 “对象”。为了不混淆概念,ES6标准新推出了一种哈希结构 Map 和 集合数结构 Set。