zoukankan      html  css  js  c++  java
  • 【JavaScript】WeakSet

    以下内容为学习记录,可以参考 MDN 原文。

    环境

    • node v12.18.1
    • npm 6.14.5
    • vscode 1.46
    • Microsoft Edge 83

    概念

    WeakSet 对象允许你将弱保持对象存储在一个集合中。

    构造函数

    使用 WeakSet 构造函数,您可以创建 WeakSet 对象,这些对象将弱保存的对象存储在集合中。

    var ws = new WeakSet();
    var foo = {};
    var bar = {};
    
    ws.add(foo);
    ws.add(bar);
    
    ws.has(foo);    // true
    ws.has(bar);    // true
    
    ws.delete(foo); // removes foo from the set
    ws.has(foo);    // false, foo has been removed
    ws.has(bar);    // true, bar is retained
    

    实例方法

    add

    add() 方法在 WeakSet 对象的最后一个元素后添加新的对象。

    const weakset1 = new WeakSet();
    const object1 = {};
    
    weakset1.add(object1);
    console.log(weakset1.has(object1));
    // expected output: true
    
    try {
      weakset1.add(1);
    } catch (error) {
      console.log(error);
      // expected output: "Error: Invalid value used in weak set" in Chrome
      // expected output: "TypeError: WeakSet value must be an object, got the number 1" in Firefox
    }
    

    delete

    delete() 方法从 WeakSet 对象中移除指定的元素。

    const weakset1 = new WeakSet();
    const object1 = {};
    
    weakset1.add(object1);
    
    console.log(weakset1.has(object1));
    // expected output: true
    
    weakset1.delete(object1);
    
    console.log(weakset1.has(object1));
    // expected output: false
    

    has

    has() 方法根据 WeakSet 是否存在相应对象返回布尔值。

    const weakset1 = new WeakSet();
    const object1 = {};
    const object2 = {};
    
    weakset1.add(object1);
    
    console.log(weakset1.has(object1));
    // expected output: true
    
    console.log(weakset1.has(object2));
    // expected output: false
    
  • 相关阅读:
    DataWindow修改的单元格文字颜色改变
    DataWindow奇偶行颜色显示不同
    Retrieve时不清除DataWindow原有数据
    Camera拍照声设定
    使用Log.isLoggable方法
    Android Audio遇到播放无声时的分析
    耳机jack构造及在应用时可能出现的问题
    【Android】使用persist属性来调用脚本文件
    [Android][Audio] audio_policy.conf文件分析
    Android4.4 耳机检测分析
  • 原文地址:https://www.cnblogs.com/jiangbo44/p/13636302.html
Copyright © 2011-2022 走看看