ES6——set、map

new Set():创建数值不可重复的类数组,===比较,但NaN与NaN相等

                size、add()、delete()、clear()、has()、keys()、values()、entries()、forEach()

                Array.form(new Set()):转成真正的数组

                iterrator存在可直接遍历values: for...of 可用

new WeakSet():成员必须是对象,没有size、forEach不可遍历;成员对象的引用是弱类型,垃                             圾回收时不考虑WeakSet,随时可以被回收,适合存放一些临时对象或对象的引用                             信息

                            只有add()、delete()、has()

new Map():创建一个key值数据类型自由的对象;

                任何具有 Iterator 接口、且每个成员都是一个双元素的数组的数据结构、都可以当作 

      Map构造函数的参数;

                多次set时,key值一样会被覆盖,注意key值一样是指地址一样;

                size、get()、set()、delete()、clear()、has()、keys()、values()、entries()、forEach()

map转数组: [...new Map()]

数组转Map:new Map([])

map转对象:键值都是字符串无损;键值有其他类型时,转成字符串再转

对象转map:new Map(Object.entires(obj))

map转json:键值都为字符串=> JSON.stringify,键值有其他=> JSON.stringify([...map])

json转map:都为字符串 => JSON.parse;   数组对象 =>new Map(JSON.parse)

new WeakMap():键值只能是对象,目的是弱引用对象为键值时,不干扰垃圾回收机制

                get()、set()、has()、delete()

弱引用的好处:做缓存,原始对象存在缓存,原始对象清除自动消失

你可能感兴趣的:(ES6,es6,前端,ecmascript)