這篇文章主要講解了“JS里的Map對象是什么”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“JS里的Map對象是什么”吧!
定義
Map對象保存鍵/值對,是鍵/值對的集合。任何值(對象或者原始值)都可以作為一個鍵或一個值。Object結(jié)構(gòu)提供了“字符串-值”的對應(yīng),Map結(jié)構(gòu)提供了“值-值”的對應(yīng)。
語法
iterable可以是一個數(shù)組或者其他iterable對象,其元素或為鍵值對,或為兩個元素的數(shù)組。每個鍵值對都會添加到新的Map。null會被當做undefined。
描述
集合中的鍵和值可以是任何類型。如果使用現(xiàn)有鍵向集合添加值,則新值會替換舊值。
相似點:都允許你按鍵存取一個值、刪除鍵、檢測一個鍵是否綁定了值。
不同點:
1.一個對象的鍵只能是字符串或者Symbols,但一個Map的鍵可以是任意值,包括函數(shù)、對象、基本類型。
2.Map中的鍵值是有序的,而添加到對象中的鍵則不是。因此,當對它進行遍歷時,Map對象是按插入的順序返回鍵值。
3.通過size屬性直接獲取一個Map的鍵值對個數(shù),而Object的鍵值對個數(shù)只能手動計算。
4.Map是可迭代的,而Object的迭代需要先獲取它的鍵數(shù)組然后再進行迭代。
5.Object都有自己的原型,所以原型鏈上的鍵名有可能和對象上的鍵名產(chǎn)生沖突。雖然ES5開始可以用map=Object.create(null)來創(chuàng)建一個沒有原型的對象,但是這種用法不太常見。
6.Map在頻繁增刪鍵值對的場景下會有些性能優(yōu)勢。
所有的Map實例都會繼承自Map.prototype。
屬性
如果對同一個鍵多次賦值,后面的值將覆蓋前面的值。
如果讀取一個未知的鍵,則返回undefined。!!!注意,只有對同一個對象的引用,Map結(jié)構(gòu)才將其視為同一個鍵。Map的鍵實際上是跟內(nèi)存地址綁定的,只要內(nèi)存地址不一樣,就視為兩個鍵。這就解決了同名屬性碰撞(clash)的問題,我們擴展別人的庫的時候,如果使用對象作為鍵名,就不用擔心自己的屬性與原作者的屬性同名。
感謝各位的閱讀,以上就是“JS里的Map對象是什么”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對JS里的Map對象是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
網(wǎng)頁標題:JS里的Map對象是什么-創(chuàng)新互聯(lián)
標題鏈接:http://www.rwnh.cn/article22/cesicc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、面包屑導航、靜態(tài)網(wǎng)站、做網(wǎng)站、微信公眾號、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容