1.对象定义的属性都会转换为字符串
2.使用对象作为键名时,会将对象转为字符串使用
通过 let set = new Set()方式来声明,然后我们就得到了一个set对象。Set属于严格类型约束,不会将属性自动转换位字符串。使用add添加元素,不允许添加重复值。
set用于存储任何类型的唯一值,无论是基本类型还是对象引用。获取元素数量使用.size;检测元素是否存在巴拉巴拉,使用.has('巴拉巴拉');删除元素使用.delete('巴拉巴拉');清除所有元素使用.clear();
通过Set()创建的是一个对象,可以使用点语法(…)或者是Array.from将其转化为数组,然后既可以使用数组处理函数了。
点语法方式和Array方式应用场景:移除Set中大于5的数值
使用点语法遍历可以利用Set的值是唯一的,对字符串或数组去重。
字符串去重 数组去重遍历Set数据:使用 keys()/values()/entries() 都可以返回迭代对象,因为set类型只有值所以 keys与values 方法结果一致。也可以使用 forEach 遍历Set数据,也可以使用 forof 遍历Set数据,默认使用 values 方法创建迭代器。
WeakSet,WeakSet结构和Set一样不会存储重复的值,它的成员必须只能是对象类型的值。数据不是对象类型将产生错误。它的添加操作 、删除操作和检索判断和Set的一样。
WeakSet结构同样不会存储重复的值,它的成员必须只能是对象类型的值。
垃圾回收不考虑WeakSet,即被WeakSet引用时引用计数器不加一,所以对象不被引用时不管WeakSet是否在使用都将删除
因为WeakSet 是弱引用,由于其他地方操作成员可能会不存在,所以不可以进行forEach( )遍历等操作
也是因为弱引用,WeakSet 结构没有keys( ),values( ),entries( )等方法和size属性
因为是弱引用所以当外部引用删除时,希望自动删除数据时使用 WeakMap
当想要删除一个对象的引用指针时直接赋值为null
网友评论