@Wangww0925
2021-02-02T12:47:27.000000Z
字数 803
阅读 212
ES6
注意:WeakSet内部数据不允许重复的
weak是懒惰的意思
WeakSet可以存放对象
WeakSet有个限制,在new的时候直接赋值,会报错,要使用add()添加才行。
// let weakObj = new WeakSet({a: '123'}); // 报错 index.js:74 Uncaught TypeError: object is not iterable
let weakObj = new WeakSet();
let obj = { name: 'www', age: 18 };
weakObj.add(obj); // weakObj必须先声明在使用add()添加
console.log(weakObj);
控制台打印:
坑:内存空间不同,可以重复
let weakObj = new WeakSet();
let obj = { name: 'www', age: 18 };
let obj1 = { name: 'www', age: 18 };
weakObj.add(obj);
weakObj.add(obj1);
console.log(weakObj); // 两个不同内存空间的对象,可以重复
控制台打印:
那么怎样显示不重复的特性呐?
let weakObj = new WeakSet();
let obj = { name: 'www', age: 18 };
let obj1 = obj; // obj赋值给obj1,这样两个对象的内存空间就相同了
weakObj.add(obj);
weakObj.add(obj1);
console.log(weakObj);
控制台打印:
此时就可以看到WeakSet内部的值不重复了
总结: 在实际开发中Set用的比较多,WeakSet用的并不多,但是他对传入值必须是对象作了很好的判断,我们灵活应用还是有一定的用处的。