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 但是如果發生以...