對象 Object
- Object 是一個特殊的對象,它本身是一個頂級對象,同時還是一個構造函數,還可以使用字面量的方式聲明一個對象
- 本質上是鍵值對的集合,但是健只能是字符串 或 Symbol
- 使用 .? [] 去獲取object 的屬性,不存在則返回 undefined ,而且可以獲取到原型上的屬性
- 不是可迭代對象,只能用 for ... in 迭代,且遍歷順序是不確定的,或者是使用 Object.keys \ Object.values \ Object.entries 得到對應的數組再進行遍歷
- 支持使用 json 進行轉換
- 如果知識簡單的key-value存儲,且 key不需要存儲復雜類型,使用對象
Map?
- es6 提供的健值對集合,健和值都可以是任何數據類型
- 通過 get/set/has/delete/clear 等方法對屬性進行查找,不存在獲取到原型上的屬性一說
- 可以通過 .size 獲取內部元素的個數
- 是可迭代對象,可以通過 for of? , forEach 迭代,遍歷順序是確定的
- 不支持使用 JSON 進行序列化,所以有 JSON 化的需求的就不能用 map
- map 的原生方法用起來更方便
- 需要頻繁地增刪鍵值對時,用Map。
- 也可以使用 WeakMap, 具有Map 的優點,但是只接受對象作為鍵名