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


    Object.js()
     ES5比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符(===)。
     它们都有缺点,==会自动转换数据类型,===的NaN不等于自身,以及+0等于-0。
     JavaScript缺乏一种运算,在所有环境中,只要两个值是一样的,它们就应该相等。

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

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

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

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


     

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

    (1)操作方法:

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

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

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

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


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


    (2)遍历方法:

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

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

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

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

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

     map 和 filter用法:

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

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

    1)用map

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


     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实例之中。

     


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

     

     

  • 相关阅读:
    POJ 2749
    POJ 3422
    POJ 3621
    SQLSERVER 2005 重新安装过程中的疑难解决
    可遇不可求的Question之MySqlClient访问字段返回System.Byte[]篇
    可遇不可求的Question之odbc驱动无法加载
    可遇不可求的BUG之采用MYSQL odbc 3.51访问数据库返回值缺失
    可遇不可求的Bug之Convert.Int32(<未定义的值>)等于0
    可遇不可求的Question之数据库操作超时篇
    可遇不可求的Question之数据库 'tempdb' 的日志已满。
  • 原文地址:https://www.cnblogs.com/haoqiyouyu/p/14575655.html
Copyright © 2020-2023  润新知