亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解ES6通過WeakMap解決內(nèi)存泄漏問題

 更新時間:2018年03月09日 11:19:19   作者:后除  
本篇文章主要介紹了詳解ES6通過WeakMap解決內(nèi)存泄漏問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

一、Map

1.定義

Map對象保存鍵值對,類似于數(shù)據(jù)結(jié)構(gòu)字典;與傳統(tǒng)上的對象只能用字符串當(dāng)鍵不同,Map對象可以使用任意值當(dāng)鍵。

2.語法

new Map([iterable])

屬性

size:返回鍵值對的數(shù)量。

操作方法

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

遍歷方法

  1. keys():返回鍵名的Iterator對象。
  2. values():返回鍵值的Iterator對象。
  3. entries():返回鍵值對的Iterator對象。
  4. 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')); // true
m.delete('mazey');
console.log(m.has('mazey')); // false
m.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不同的是其鍵必須是對象,因為鍵是弱引用,在鍵對象消失后自動釋放內(nèi)存。

2.語法

new WeakMap([iterable])

方法

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

注意

因為WeakMap的特殊的垃圾回收機(jī)制,所以沒有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解決內(nèi)存泄漏問題

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

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

<button type="button" id="btn">按鈕</button>
<script>
let wm = new WeakMap();
let btn = document.querySelector('#btn');
wm.set(btn, {count: 0});
btn.addEventListener('click', () => {
  let v = wm.get(btn);
  v.count++;
  console.log(wm.get(btn).count);
});
// 1 2 3 4 5...
</script>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 分享20個JavaScript?單行代碼

    分享20個JavaScript?單行代碼

    這篇文章主要給大家分享了20個JavaScript?單行代碼,JavaScript單行代碼殺手锏,可以讓工作更有效率哦,需要的朋友可以參考一下,希望對你的學(xué)習(xí)有所幫助
    2021-12-12
  • 老生常談js中的MVC

    老生常談js中的MVC

    下面小編就為大家?guī)硪黄仙U刯s中的MVC。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • JavaScript如何刪除對象的某個屬性詳析

    JavaScript如何刪除對象的某個屬性詳析

    這篇文章主要給大家介紹了關(guān)于JavaScript如何刪除對象的某個屬性的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • js微信支付實現(xiàn)代碼

    js微信支付實現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了javascript微信支付的相關(guān)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • JavaScript實現(xiàn)抖音羅盤時鐘

    JavaScript實現(xiàn)抖音羅盤時鐘

    這篇文章主要為大家詳細(xì)介紹了JavaScript實現(xiàn)抖音羅盤時鐘,特別實用的效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • 探索JavaScript中私有成員的相關(guān)知識

    探索JavaScript中私有成員的相關(guān)知識

    這篇文章主要介紹了探索JavaScript中私有成員的相關(guān)知識,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,,需要的朋友可以參考下
    2019-06-06
  • 原生js實現(xiàn)放大鏡

    原生js實現(xiàn)放大鏡

    本文主要分享了原生js實現(xiàn)放大鏡效果的示例代碼,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • 單擊瀏覽器右上角的X關(guān)閉窗口彈出提示的小例子

    單擊瀏覽器右上角的X關(guān)閉窗口彈出提示的小例子

    單擊瀏覽器右上角的X關(guān)閉窗口彈出提示的小例子,需要的朋友可以參考一下
    2013-06-06
  • 自己實現(xiàn)string的substring方法 人民幣小寫轉(zhuǎn)大寫,數(shù)字反轉(zhuǎn),正則優(yōu)化

    自己實現(xiàn)string的substring方法 人民幣小寫轉(zhuǎn)大寫,數(shù)字反轉(zhuǎn),正則優(yōu)化

    這是最近碰到的幾個題目,簡單地寫一下我自己的方案,在此分享給大家,也希望能看到大家的方案
    2012-09-09
  • 在小程序中使用Echart圖表的示例代碼

    在小程序中使用Echart圖表的示例代碼

    這篇文章主要介紹了在小程序中使用Echart圖表的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08

最新評論