一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

ES6新特性(3)之Symbol/Set/WeakSet

 zhulin1028 2022-04-05

(一)Map

Map和weakmap它們本質(zhì)與對象一樣,都是鍵值對的集合,但是他們與Object對象主要的不同是,鍵可以是各種類型的數(shù)值,而若鍵是Object類型,那么只能是字符串類型或者Symbol類型值。Map和WeakMap是更為完善的Hash結(jié)構(gòu)。

1.對象和Map

//---------對象---------------------------

var keyObj = {};

var dataObj = {};

dataObj[keyObj] = "大腳好";

雖然表面上看dataObj對象的鍵是對象keyObj,其實(shí)不是,dataObj[keyObj]會將keyObj轉(zhuǎn)換轉(zhuǎn)為字符串"[object Object]"。

//----------Map----------------------------

var mapData = new Map();

var objKey = {p: "antzone"};

mapData.set(objKey, "對象鍵"); ???//添加新元素

console.log(mapData.get(objKey)); //獲取對應(yīng)key的value?

console.log(mapData.has(objKey)); ?//判斷是否含有

console.log(mapData.delete(objKey)); //刪除鍵值對

mapData.clear(); ???//清空

2.數(shù)組作為構(gòu)造函數(shù)參數(shù)

var mapData = new Map([

["webName", "資源庫"],

["url", "www.yuankuwang.com"]

]);

console.log(mapData.size);//2

console.log(mapData.has("webName"));//true

console.log(mapData.get("webName"));//資源庫

console.log(mapData.has("url"));//true

console.log(mapData.get("url"));//www.yuankuwang.com

構(gòu)造函數(shù)參數(shù)為數(shù)組執(zhí)行的是如下算法(數(shù)組的forEach方法)

forEach方法將會以插入順序?qū)ap對象中的每一個鍵值對執(zhí)行一次參數(shù)中提供的回調(diào)函數(shù)。

value:可選,元素的值。

key:可選,元素的鍵。

Map:可選,當(dāng)前的Map對象。

thisArg:可選,callback執(zhí)行時其this的值。 ?

mapData.forEach(function (value,key) {

??console.log(value,key);

})

var arr = [["webName", "資源庫"], ["url", "www.yuankuwang.com"]];

var mapData = new Map();

arr.forEach(([key, value]) => mapData.set(key, value));

3.由于Map對象的鍵可以是對象,所以只有對同一個對象的引用,Map對象才將其視為同一個鍵。

NaN不嚴(yán)格相等于自身,但Map將其視為同一個鍵

let mapData = new Map();

mapData.set(NaN, 5);

console.log(mapData.get(NaN));

mapData.set(-0, 5);

console.log(mapData.get(+0));

4.Map遍歷

//---------轉(zhuǎn)成數(shù)組-----------

var mapData = new Map([["webName", "資源庫"], ["url", "www.yuankuwang.com"]]);

var arr = [...mapData];

console.log(arr);

//---------for--of循環(huán)--------

var mapData = new Map([["webName", "資源庫"], ["url", "www.yuankuwang.com"]]);

for(let elem of mapData) {

??console.log(elem);

}

//----------其他函數(shù)-------------

var keyIterator = mapData.keys();//鍵遍歷器

console.log(keyIterator);

var valueIterator = mapData.values(); ?//值遍歷器

console.log(keyIterator.next()); ??//遍歷器用法

console.log(valueIterator);

var size = mapData.size; ?????//鍵值對數(shù)量

console.log(size);

(二)WeakMap

WeakMap結(jié)構(gòu)與Map結(jié)構(gòu)基本類似。

區(qū)別:是它只接受對象作為鍵名,不接受其他類型的值作為鍵名。鍵名是對象的弱引用,當(dāng)對象被回收后,WeakMap自動移除對應(yīng)的鍵值對,WeakMap結(jié)構(gòu)有助于防止內(nèi)存泄漏。

var wm = new WeakMap(); //只能放object的鍵

var obj = new Object();

wm.set(obj, '對象1');

// wm.delete(obj);

obj = null; //效果和delete的效果一樣

console.log(wm.get(obj)); //undefined

console.log(wm.has(obj)); //false ?

由于WeakMap對象不可遍歷,所以沒有size屬性。 ?

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    欧美黑人精品一区二区在线| 免费精品一区二区三区| 国产精品香蕉在线的人| 日本熟女中文字幕一区| 色哟哟国产精品免费视频| 好吊视频一区二区在线| 国产女高清在线看免费观看| 东京热加勒比一区二区| 欧美国产亚洲一区二区三区| 激情内射日本一区二区三区| 日本不卡在线视频你懂的 | 视频一区二区黄色线观看| 国产盗摄精品一区二区视频| 欧美国产日韩变态另类在线看 | 亚洲av在线视频一区| 老司机精品国产在线视频| 欧美三级大黄片免费看| 国产又粗又猛又长又黄视频| 一区二区三区日韩在线| 尹人大香蕉一级片免费看| 激情偷拍一区二区三区视频| 91播色在线免费播放| 欧美午夜国产在线观看| 日韩精品一区二区不卡| 极品少妇一区二区三区精品视频| 国产目拍亚洲精品区一区| 五月综合婷婷在线伊人| 69精品一区二区蜜桃视频| 欧美一区二区三区播放| 一级片二级片欧美日韩| 加勒比东京热拍拍一区二区| 欧美整片精品日韩综合| 欧美一区二区三区在线播放| 日本av在线不卡一区| 精品日韩欧美一区久久| 亚洲国产精品久久琪琪| 日韩黄色一级片免费收看| 亚洲伦片免费偷拍一区| 男人和女人草逼免费视频| 中国美女草逼一级黄片视频| 午夜福利网午夜福利网|