弱集
描述
用例:检测循环引用
//对对象中存储的所有内容执行回调 函数execRecurrively(fn,subject,_refs=new WeakSet()){ //避免无限递归 if(_refs.has(subject)){ 回报; } fn(受试者); if(主题类型===“对象”&&subject){ _参考文献添加(主题); for(主题中的常量键){ execRecurrively(fn,subject[key],_refs); } _参考删除(主题); } } 常量foo={ foo:“foo”, 巴:{ bar:“bar”, }, }; foo.bar.baz=foo;// 循环引用! execRecursively((obj)=>控制台.log(obj,foo);
施工单位
弱集() -
创建新的 弱集 对象。
实例属性
WeakSet.原型.结构 -
创建实例对象的构造函数。 对于 弱集 实例,初始值为 弱集 构造函数。 WeakSet.protype[Symbol.toStringTag] -
的初始值 [Symbol.toStringTag] 属性是字符串 “弱集” 。此属性用于 Object.prototype.toString() .
实例方法
WeakSet.prototype.add() -
追加 价值 到 弱集 对象。 WeakSet.prototype.delete() -
删除 价值 来自 弱集 . WeakSet.prototype.has(值) 将返回 假 之后。 WeakSet.prototype.has() -
返回一个布尔值断言 价值 存在于 弱集 对象与否。
示例
使用WeakSet对象
const ws=新的WeakSet(); 常量foo={}; 常量栏={}; ws.add(foo); ws.add(bar); ws.has(foo);// 真的 ws.has(bar);// 真的 ws.delete(foo);// 从集合中删除foo ws.has(foo);// false,已删除foo ws.has(bar);// 对,保留条形图