zoukankan      html  css  js  c++  java
  • Set、Weak Set、Map、Weak Map学习笔记

    Set

    Set对象是不可重复值的集合
    Set内部使用Object.is()方法来判断两个数据项是否相等

    方法:

    has();
    delete():Set中删除某个值,
    clear():Set中删除所有值
    forEach():方法来遍历Set中的数据项

    WeakSet

    WeakSet 和 Set 类似,都是不重复的值的集合,但是和 Set 有不同:

    • WeakSet 的成员只能是对象,若调用了add()方法时传入了非对象的参数,则会抛出错误。如果在has()或者delete()方法中传入了非对象的参数则会返回false;
    • WeakSet 的对象都是弱引用,即WeakSet 中对对象的引用不会被考虑进垃圾回收机制,即只要没有其他的对象引用该对象,则该对象就会被回收,而不管它在不在 WeakSet;
    • Weak Set没有size属性;
    • WeakSet不可迭代,因此不能用于for-of循环;
    • WeakSet 无法暴露出任何迭代器(例如 keys() 与 values() 方法) ,因此没有任何编程手段可用于判断 Weak Set 的内容;

    (由于这个特性,所以 WeakSet 适合临时存放一组对象和跟对象绑定的信息)

    应用场景:

    用于存储DOM节点,而不用担心这些节点从文档移除时会引发内存泄露

    方法:

    WeakSet 有三个方法:add, delete, has

    Map

    Map能够存放键值对,其中,键的去重是通过Object.is()方法进行比较,键的数据类型可以是基本类型数据也可以是对象,而值也可以是任意类型数据。

    方法:

    和Set一样

    Weak Map

    Weak Map对Map而言,就像是Weak Set相对于Set一样:Weak Map(或者Weak Set)都是存储对象弱引用的方式,在Weak Map(或者Weak Set)中,所有的键都必须是对象(尝试使用非对象的键会抛出错误),而且这些对象都是弱引用,不会干扰到垃圾回收。当Weak Map中的键在Weak Map之外不存在引用时,该键值对会被移除

  • 相关阅读:
    Windows 下Nexus搭建Maven私服
    WebService中获取request对象一例
    利用window.navigator.userAgent判断当前是否微信内置浏览器
    批量插入写法
    MySql 使用递归函数时遇到的级联删除问题
    【Mysql】 你会用 information_schema吗?
    Volatile 多线程中用到的关键字
    spring+springMVC中使用@Transcational方式管理事务的必须要配的东西。
    Android中操作SQLite数据库
    Oracle中的字符处理方法
  • 原文地址:https://www.cnblogs.com/superlizhao/p/13983048.html
Copyright © 2011-2022 走看看