Map 對象保存鍵值對。任何值(對象或者原始值) 均可以做爲一個鍵或一個值。prototype
new Map([iterable])對象
Object和 Map相似的一點是,它們都容許你按鍵存取一個值,均可以刪除鍵,還能夠檢測一個鍵是否綁定了值.所以,一直以來,咱們都把對象當成Map來使用,不過,如今有了Map,下面的區別解釋了爲何使用Map更好點.字符串
糾錯
一個對象一般都有本身的原型,因此一個對象總有一個"prototype"鍵。
不過,從 ES5 開始可使用 map = Object.create(null)來建立一個沒有原型的對象。
一個對象的鍵只能是字符串或者 Symbols,但一個 Map 的鍵能夠是任意值。原型
你能夠經過size屬性很容易地獲得一個Map的鍵值對個數,而對象的鍵值對個數只能手動確認。
可是這並不意味着你能夠隨意使用 Map,對象仍舊是最經常使用的。it
在運行以前 key 是不是未知的,是否須要動態地查詢 key 呢?
是否全部的值都是統一類型,這些值能夠互換麼?
是否須要不是字符串類型的 key ?
鍵值對常常增長或者刪除麼?
是否有任意個且很是容易改變的鍵值對?
這個集合能夠遍歷麼?
假如以上全是「是」的話,那麼你須要用 Map 來保存這個集。 相反,你有固定數目的鍵值對,獨立操做它們,區分它們的用法,那麼你須要的是對象。object