Set
Set可以用来保存对象或者基本类型,所有保存的值都是唯一的, chrome浏览器38和firefox浏览器13以上版本及nodeJS对Set支持都很不错
创建Set实例的基本方法为:
var set = new Set();
var set = new Set([1,2,3,4,4,4,4,4]);
console.log( Array.from(set) ); //输出:[ 1, 2, 3, 4 ]
可以看到,4在set里面只保存了一个, 所以Set对象可以用来给数组去重,遍历Set
for (var i of set) {
console.log(i)
}
1
2
3
4
Set也能用来保存NaN和undefined, 如果有重复的NaN, Set会认为就一个NaN(实际上NaN!=NaN);
Set对象属性:
Set.prototype
Set.prototype.size
Set对象方法:
Set.prototype.add()
Set.prototype.clear()
Set.prototype.delete()
Set.prototype.entries()
Set.prototype.forEach()
Set.prototype.has()
Set.prototype.values()
Set.prototype[@@iterator]()
WeakSet
WeakSet是一些对象值的集合且其中的每个对象值都只能出现一次,WeakSet只能存对象类型元素,比如Object, Array, Function 等;有了弱引用的WeakSet就不用担心内存泄漏了,如果别的对象不引用该对象,这个对象会被垃圾回收机制自动回收;
WeakSet对象的方法只有三个,而且WeakSet对象没有size属性;
weakSet.add();
weakSet.delete();
weakSet.has();
如果对象不存在引用,WeakSet对象会把没有引用的对象占用的内存回收,weakSet可以用来保存DOM节点, 当节点被删除, weakSet里面的该节点如果不存在别的引用的话, 一段时间内会被内存回收.