ES6學習之路8 WeakSet資料結構

2021-09-10 02:22:49 字數 2802 閱讀 6802

weakset 結構與 set 類似,也是不重複的值的集合。但是,它與 set 有兩個區別。

1.weakset 的成員只能是物件,而不能是其他型別的值。
let weakset = new weakset();

weakset.add();//

weakset }

weakset.add(1);//

uncaught

typeerror

:invalid value used in weak set

weakset.add('one');//

uncaught

typeerror

:invalid value used in weak set

weakset.add(true);//

uncaught

typeerror

:invalid value used in weak set

weakset.add(symbol());//

uncaught

typeerror

:invalid value used in weak set

weakset.add(null);//

uncaught

typeerror

:invalid value used in weak set

weakset.add(undefined);//

uncaught

typeerror

:invalid value used in weak set

weakset.add([1,2]);//

weakset ,[1,2]}

weakset 可以接受乙個陣列或類似陣列的物件作為引數。(實際上,任何具有 iterable 介面的物件,都可以作為 weakset 的引數。)該陣列的所有成員,都會自動成為 weakset 例項物件的成員。

let arr = [[1, 2], [3, 4]];

let weakset = new weakset(arr);

console.log(weakset);//weakset

let weakset = new weakset([[1, 2], [3, 4]]);

console.log(weakset);//weakset

let arr = [1, 2];

let weakset = new weakset(arr);

console.log(weakset);//uncaught typeerror: invalid value used in weak set

let weakset = new weakset();

weakset.add();//weakset }

let weakset = new weakset();

console.log(weakset);//uncaught typeerror: undefined

isnot a function

let weakset = new weakset(,'b':[1,2]});

console.log(weakset);//uncaught typeerror: undefined

isnot a function

陣列的成員成為 weakset 的成員,而不是a陣列本身。這意味著,陣列的成員只能是物件。

weakset 結構的三方法

add(value):向 weakset 例項新增乙個新成員。

delete(value):清除 weakset 例項的指定成員。—-返回乙個布林值,表示是否刪除成功

has(value):返回乙個布林值,表示某個值是否在 。

2.weakset 中的物件都是弱引用。

由於weakset 中的物件都是弱引用,所以不能使用foreach方法,也沒有size屬性。

let ws = new weakset();

let bar = ;

let foo = {};

console.log(ws.add(bar));//weakset }

console.log(ws.has(bar));//

true

console.log(ws.has(foo));//

false

console.log(ws.delete(bar));//

true

console.log(ws.has(bar));//

false

console.log(ws.size);//

undefined

ws.foreach(x=>console.log(x));//uncaught typeerror: ws.foreach is

not a function

總結:

weakset 成員只能是物件,而不能是其他型別的值。

weakset 中的物件都是弱引用。

weakset 相比 set,少了clear方法和size屬性。

weakset 不能使用foreach方法。

我的部落格,歡迎交流!

我的csdn部落格,歡迎交流!

前端筆記專欄

前端筆記列表

遊戲列表

posted @

2017-12-08 17:46

newman·li 閱讀(

...)

編輯收藏

ES6中如何使用Set和WeakSet

es6中提供了兩新資料結構 set和weakset。set是類似於陣列,但是成員變數的值都是唯一的,沒有重複的值。weakset也是不重複的值的集合,但是只能用來存放物件。一 set使用 1 set本身提供了乙個建構函式,用來生成set資料結構。var s new set 2,2,2,5,8,16,...

es6學習之路(3) 解構賦值

es6 允許按照一定模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構 destructuring 本質上,這種寫法屬於 模式匹配 只要等號兩邊的模式相同,左邊的變數就會被賦予對應的值 1,陣列 let foo,bar baz 1,2 3 foo 1 foo 1 bar 2 baz 3 let...

我的ES6學習之路(一)

強烈推薦 阮一峰寫的 ecmascript6入門 let和const命令 let命令 let用於宣告變數,用法和var相似,但是不完全相同,有以下幾點區別 let命令只在當前作用域中有效 let不會發生 變數提公升 的現象,變數一定要宣告後在使用他,否則會報錯。問題 es6支援es5 但是如果發生以...