JavaScript 中階

Map 與 object 的差別?為什麼有 object 還需要 Map?

AI 練習作答

Map 與 Object 的差別

Object(物件)

  • Key 只能是字串或 Symbol
  • 原型鏈上有預設屬性(如 toStringhasOwnProperty
  • 沒有內建的 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 評分