国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

詳解ES6通過WeakMap解決內存泄漏問題

2024-05-06 15:20:54
字體:
來源:轉載
供稿:網友

一、Map

1.定義

Map對象保存鍵值對,類似于數據結構字典;與傳統上的對象只能用字符串當鍵不同,Map對象可以使用任意值當鍵。

2.語法

new Map([iterable])

屬性

size:返回鍵值對的數量。

操作方法

    set(key, value):設置(新增/更新)鍵key的值為value,返回Map對象。 get(key):讀取鍵key的值,沒有則返回undefined。 has(key):判斷一個Map對象中是否存在某個鍵值對,返回true/false。 delete(key):刪除某個鍵值對,返回true/false。 clear():清除Map對象中所有鍵值對。

遍歷方法

    keys():返回鍵名的Iterator對象。 values():返回鍵值的Iterator對象。 entries():返回鍵值對的Iterator對象。 forEach((value, key, map) => {}):遍歷Map對象所有鍵值對。

3.示例

操作方法

let m = new Map([  ['foo', 11],  ['bar', 22]]);m.set('mazey', 322)  .set('mazey', 413);console.log(m); // {"foo" => 11, "bar" => 22, "mazey" => 413}console.log(m.has('mazey')); // truem.delete('mazey');console.log(m.has('mazey')); // falsem.clear();console.log(m); // {}

遍歷方法

let m = new Map([  ['foo', 11],  ['bar', 22],  ['mazey', 413]]);console.log(m); // {"foo" => 11, "bar" => 22, "mazey" => 413}console.log(m.keys()); // MapIterator {"foo", "bar", "mazey"}console.log(m.values()); // MapIterator {11, 22, 413}console.log(m.entries()); // MapIterator {"foo" => 11, "bar" => 22, "mazey" => 413}m.forEach((value, key, map) => {  console.log("鍵:%s,值:%s", key, value);});// 鍵:foo,值:11// 鍵:bar,值:22// 鍵:mazey,值:413

二、WeakMap

1.定義

WeakMap對象保存鍵值對,與Map不同的是其鍵必須是對象,因為鍵是弱引用,在鍵對象消失后自動釋放內存。

2.語法

new WeakMap([iterable])

方法

    set(key, value):設置(新增/更新)鍵key的值為value,返回WeakMap對象。 get(key):讀取鍵key的值,沒有則返回undefined。 has(key):判斷一個WeakMap對象中是否存在某個鍵值對,返回true/false。 delete(key):刪除某個鍵值對,返回true/false。

注意

因為WeakMap的特殊的垃圾回收機制,所以沒有clear()方法。

3.示例

let obj = {  foo: 11};let wm = new WeakMap();wm.set(obj, 413322);console.log(wm); // {{…} => 413322}console.log(wm.has(obj)); // true

三、通過WeakMap解決內存泄漏問題

當使用Dom對象綁定事件時,Dom對象消失后若沒有及時釋放內存(置null),便會一直存在內存中。

使用WeakMap保存Dom對象不會出現這樣的問題,因為Dom對象消失后,JS的垃圾回收機制便會自動釋放其所占用的內存。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 雅安市| 灵丘县| 壤塘县| 八宿县| 民勤县| 万源市| 乌鲁木齐县| 安乡县| 渝北区| 司法| 乐清市| 威信县| 新干县| 新乡市| 五指山市| 门源| 建平县| 岚皋县| 海晏县| 绥德县| 漳浦县| 繁昌县| 澳门| 青海省| 定襄县| 玛多县| 黎平县| 上蔡县| 江北区| 常山县| 仁布县| 乐都县| 贵德县| 海晏县| 佛山市| 安达市| 平湖市| 托克逊县| 彭州市| 顺平县| 丹寨县|