| 类型 | 定义 | 键值 | 键的顺序 | Size | 迭代 | 序列化和解析 |
|---|---|---|---|---|---|---|
| Object | const ex1 = {name: 'obj'} |
|
Object的键并不总是有序的 | 手动计算 | Object没有实现迭代协议,只能借助Object.keys()、Object.values()、for in(迭代可枚举的属性) | JSON.Stringfy()| JSON.parse() |
| Map | const ex2 = new Map(); ex2.set('name','obj') | 一个 Map的键可以是任意值,包括函数、对象或任意基本类型 | Map的键值是有序的 | 通过Map对象的size属性获取 | 可迭代 | 没有直接的元素的序列化和解析的支持。 |
| WeakMap | const ex3 = new WeakMap(); ex3.set({name:2},2) | 一个 WeakMap的键必须是对象 | WeakMap的键值是有序的 | 通过WeakMap对象的size属性获取 | 没有直接的元素的序列化和解析的支持。 |