JavaScript 中階
Map 與 object 的差別?為什麼有 object 還需要 Map?
Map 與 Object 的差別
Object(物件)
- Key 只能是字串或 Symbol
- 原型鏈上有預設屬性(如
toString、hasOwnProperty) - 沒有內建的 size 屬性
- 不保證插入順序(數字 key 會被排序)
const obj = {};
obj['name'] = 'Alice';
obj[1] = 'one'; // key 自動轉為字串 '1'
Object.keys(obj); // ['1', 'name'](數字 key 排在前面)
Map
- Key 可以是任意型別(物件、函式、原始值)
- 不繼承原型屬性,沒有干擾問題
- 有
size屬性可直接取得數量 - 嚴格保留插入順序
const map = new Map();
map.set('name', 'Alice');
map.set(42, 'answer');
map.set({ id: 1 }, 'user');
map.size; // 3
map.get(42); // 'answer'
何時用 Map 而非 Object?
| 情境 | 推薦 |
|---|---|
| Key 需要是非字串型別 | Map |
| 需要頻繁增刪 key-value | Map |
| 需要保留插入順序 | Map |
| 需要知道數量(.size) | Map |
| JSON 序列化 | Object |
| 靜態設定(config) | Object |
✦ AI 模擬面試
輸入你的答案,AI 即時分析精準度與改進空間
登入後即可使用 AI 評分
