02-ES6-Object.is(a,b) / Set数据结构 / Array.from()将Set结构或类数组转为数组/ES6处理内存泄漏

Object.js()
 ES5比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符(===)。
 它们都有缺点,==会自动转换数据类型,===的NaN不等于自身,以及+0等于-0。
 JavaScript缺乏一种运算,在所有环境中,只要两个值是一样的,它们就应该相等。
02-ES6-Object.is(a,b) / Set数据结构 / Array.from()将Set结构或类数组转为数组/ES6处理内存泄漏

 Set数据结构: 本身是一个构造函数,用来生成Set数据结构。它类似于数组,但是成员的值都是唯一的,没有重复的值。

1. set做数组去重,也可以给类数组去重

02-ES6-Object.is(a,b) / Set数据结构 / Array.from()将Set结构或类数组转为数组/ES6处理内存泄漏

 2.set内部NaN与NaN是相等的,这点与Object.is(NaN,NaN)一致

02-ES6-Object.is(a,b) / Set数据结构 / Array.from()将Set结构或类数组转为数组/ES6处理内存泄漏

 3.set数据结构通过size拿到去重后的数据长度

02-ES6-Object.is(a,b) / Set数据结构 / Array.from()将Set结构或类数组转为数组/ES6处理内存泄漏


 

4.Set实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员)

(1)操作方法:

add(value):添加某个值,返回Set结构本身。

delete(value):删除某个值,返回一个布尔值,表示删除是否成功。

has(value):返回一个布尔值,表示该值是否为Set的成员。

clear():清除所有成员,没有返回值。

02-ES6-Object.is(a,b) / Set数据结构 / Array.from()将Set结构或类数组转为数组/ES6处理内存泄漏


Array.from方法可以将Set结构转为数组。Set负责去重,Array.from()负责转化为真正的数组

02-ES6-Object.is(a,b) / Set数据结构 / Array.from()将Set结构或类数组转为数组/ES6处理内存泄漏


(2)遍历方法:

 keys():返回键名的遍历器

values():返回键值的遍历器

entries():返回键值对的遍历器

forEach():使用回调函数遍历每个成员

需要特别指出的是,Set的遍历顺序就是插入顺序。这个特性有时非常有用,比如使用Set保存一个回调函数列表,调用时就能保证按照添加顺序调用。

02-ES6-Object.is(a,b) / Set数据结构 / Array.from()将Set结构或类数组转为数组/ES6处理内存泄漏

 map 和 filter用法:

02-ES6-Object.is(a,b) / Set数据结构 / Array.from()将Set结构或类数组转为数组/ES6处理内存泄漏

 使用Set可以很容易的实现 1.做去重合并 2.找到共有值  3.不同值

02-ES6-Object.is(a,b) / Set数据结构 / Array.from()将Set结构或类数组转为数组/ES6处理内存泄漏

 在遍历中去改变原有Set结构:用新的Set重新赋值给老Set:

1)用map

02-ES6-Object.is(a,b) / Set数据结构 / Array.from()将Set结构或类数组转为数组/ES6处理内存泄漏

 2)用Array.from(类数组,map方法)

02-ES6-Object.is(a,b) / Set数据结构 / Array.from()将Set结构或类数组转为数组/ES6处理内存泄漏


 WeakSet 结构

几大特点:

1. 与Set类似,是一个不重复值的集合

2.WeakSet成员只能是对象,如:new WeakSet( [ [1,2]  , [3,4] ] ) ;   new WeakSet( [{name:'zs',age:18}] );

3.WeakSet中的对象都是弱引用,垃圾回收机制就是其他对象不引用WeakSet这个对象了,就把你给回收释放掉,释放掉就意味着WeakSet中对象就没了,不会让你占坑不干活的,

所以WeakSet不能像Set那样有遍历方法。也没有size属性。

因为我们平时在处理内存泄漏的时候,都是自己要手动去处理,及时清除引用非常重要。但是,你不可能记得那么多,有时候一疏忽就忘了,所以才有那么多内存泄漏。

4. 三个实例方法:

(1).add(value):向WeakSet实例添加一个新成员

(2).delete(value):清除WeakSet实例的指定成员。

(3).has(value):返回一个布尔值,表示某个值是否在WeakSet实例之中。

 02-ES6-Object.is(a,b) / Set数据结构 / Array.from()将Set结构或类数组转为数组/ES6处理内存泄漏


 把构造函数内的this(以后的实例对象)添加进WeakSet中,这样每个实例天生自带防内存泄漏的特性。

 02-ES6-Object.is(a,b) / Set数据结构 / Array.from()将Set结构或类数组转为数组/ES6处理内存泄漏