在js中對象object的本質上就是鍵值對的集合哈希結構hash,但是對象只能用字符串來當做鍵名,所以就會帶來很大的限制,加入我們用js獲取dom,我就想用當前dom當做鍵值,是沒有辦法實現的,強行寫入的話只會把當前dom節點轉換為字符串。

所以,如果我們想要一次作為鍵值,那么就不得不在原有的dom結構中增加參數,味了解決類似問題所以es6引入了Map,它也是一個鍵值對的對象,但是它的鍵名就不在受限于字符串,可以用任何類型的值來代表鍵名,對象、數組、字符等等。運用次方法再看上述問題我們就可以輕松解決。

但是需要注意的是,如果用兩個相同內容的數據,但是其存儲地址不同的話,Map是沒有辦法獲取到鍵值的。比如:

如上圖所示,m和n的內容是完全相同的,在get時再重新寫入一個新對象,mn的內容都無法獲取到,但是單獨獲取n的可以,這也就說明,Map的鍵名存儲的內容實際是存儲地址。
Map的常用屬性和方法:
size:返回成員數量
set:追加key 并返回當前map 所以set可以鏈式操作比如

get::獲取key的值
has:判斷key是否存在
delete:刪除指定key
clear:刪除所有內容
keys:返回所有key
values:返回所有內容
entries:將鍵值對轉數組返回[[鍵,值]...]
forEach:循環遍歷



