前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >深入理解 ES6 新增的数据结构 Set 与 WeakSet

深入理解 ES6 新增的数据结构 Set 与 WeakSet

作者头像
Leophen
发布于 2022-05-07 11:33:17
发布于 2022-05-07 11:33:17
44900
代码可运行
举报
文章被收录于专栏:Web前端开发Web前端开发
运行总次数:0
代码可运行

一、Set

1、Set 的基本用法

ES6 提供了新的数据结构 Set,它类似于数组,但是其成员的值都是唯一的,没有重复的值

Set 本身是一个构造函数,用来生成 Set 数据结构

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var s = new Set();

[2, 3, 5, 4, 5, 2, 2].map(x => s.add(x));

for (let i of s) {
  console.log(i);
}
// 2 3 5 4

上面代码通过 add 方法向 Set 结构加入成员,结果表明 Set 结构不会添加重复的值

Set 函数可以接受一个数组(或类数组)作为参数,用来初始化

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 例一
var set1 = new Set([1, 2, 3, 3, 4]);

set1      // {1, 2, 3, 4}
set1.size // 4
[...set1] // [1, 2, 3, 4]

// 例二
const divArr = [...document.querySelectorAll('div')]
var set2 = new Set(divArr);

set2      // {div.div1, div.div2, div.div3}
set2.size // 3
[...set2] // [div.div1, div.div2, div.div3]

上面代码中,例一是 Set 函数接受数组作为参数,例二是接受类数组作为参数

2、Set 对数组进行去重

上面代码中,也展示了一种去除数组重复成员的方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var set = new Set([1, 2, 3, 3, 4]);

[...set]        // [1, 2, 3, 4]

Array.from 方法也可以将 Set 结构转为数组

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var set = new Set([1, 2, 3, 3, 4]);

Array.from(set) // [1, 2, 3, 4]

另外,向 Set 加入值时,不会发生类型转换,所以 5 和 "5" 是两个不同的值 Set 内部判断两个值是否不同,使用的算法叫做 “Same-value equality”,类似于 ===,区别在于 “Same-value equality”NaN 等于自身,而 === 认为 NaN 不等于自身

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let set = new Set();
let a = NaN;
let b = NaN;
set.add(a);
set.add(b);

set  // {NaN}

上面代码向 Set 实例添加了两个 NaN,但是只能加入一个。这表明,在 Set 内部,两个 NaN 是相等

另外,两个对象总是不相等的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let set = new Set();

set.add({});
set.size // 1

set.add({});
set.size // 2

上面代码表示,由于两个空对象不相等,所以它们被视为两个值

3、Set 实例的属性

Set 实例的属性包括:

Set.prototype.constructor

构造函数,默认就是 Set 函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var set = new Set([1, 2, 3]);

set.constructor // Set() { [native code] }=
Set.prototype.size

返回 Set 实例的成员总数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var set = new Set([1, 2, 3]);

set.size        // 3

4、Set 实例的操作方法

① add(value)

添加某个值,返回 Set 结构本身

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var set1 = new Set([1, 2, 3]);
var set2 = set1.add(4)

set1  // Set(4) {1, 2, 3, 4} 
set2  // Set(4) {1, 2, 3, 4} 
② delete(value)

删除某个值,返回一个布尔值,表示删除是否成功

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var set1 = new Set([1, 2, 3]);
var set2 = set1.delete(2)
var set3 = set1.delete(4)

set1  // {1, 3}
set2  // true
set3  // false
③ has(value)

返回一个布尔值,表示该值是否为 Set 的成员

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var set1 = new Set([1, 2, 3]);
var set2 = set1.has(2)
var set3 = set1.has(4)

set1  // Set(3) {1, 2, 3}
set2  // true
set3  // false
④ clear()

清除所有成员,没有返回值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var set1 = new Set([1, 2, 3]);
var set2 = set1.clear()

set1  // Set(0) {}
set2  // undefined

5、Set 实例的遍历方法

① keys()

返回键名的遍历器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let set = new Set(['red', 'green', 'blue']);

for (let item of set.keys()) {
  console.log(item);
}
// red
// green
// blue
② values()

返回键值的遍历器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let set = new Set(['red', 'green', 'blue']);

for (let item of set.values()) {
  console.log(item);
}
// red
// green
// blue

Set 结构的默认遍历器生成函数就是它的 values 方法 因此,可以省略 values 方法,直接用 for...of 循环遍历 Set

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let set = new Set(['red', 'green', 'blue']);

for (let x of set) {
  console.log(x);
}
// red
// green
// blue
③ entries()

返回键值对的遍历器,每次输出一个数组,两个成员完全相等

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let set = new Set(['red', 'green', 'blue']);

for (let item of set.entries()) {
  console.log(item);
}
// ["red", "red"]
// ["green", "green"]
// ["blue", "blue"]
④ forEach()

使用回调函数遍历每个成员,用于对每个成员执行某种操作,没有返回值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let set = new Set([1, 2, 3]);
set.forEach((value, key) => console.log(value * 2))
// 2
// 4
// 6

6、Set 遍历的应用

① 并集(Union)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let a = new Set([1, 2, 3]);
let b = new Set([3, 4, 5]);

let union = new Set([...a, ...b]);

union // Set(5) {1, 2, 3, 4, 5}
② 交集(Intersect)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let a = new Set([1, 2, 3]);
let b = new Set([3, 4, 5]);

let intersect = new Set([...a].filter(x => b.has(x)));

intersect // Set(1) {3}
③ 差集(Difference)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let a = new Set([1, 2, 3]);
let b = new Set([3, 4, 5]);

let difference = new Set([...a].filter(x => !b.has(x)));

difference // Set(2) {1, 2}

二、WeakSet

1、WeakSet 的基本用法

WeakSet 是一个构造函数,可以使用 new 命令,创建 WeakSet 数据结构

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var ws = new WeakSet();

ws // WeakSet {}

作为构造函数,WeakSet 可以接受一个数组或类数组的对象作为参数,该数组的所有成员,都会自动成为 WeakSet 实例对象的成员

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var a = [[1, 2], [3, 4]];
var ws = new WeakSet(a);

ws // WeakSet {Array(2), Array(2)}

上面代码中,a 是一个数组,它有两个成员,也都是数组 将 a 作为 WeakSet 构造函数的参数,a 的成员会自动成为 WeakSet 的成员

2、WeakSet 与 Set 的区别

WeakSet 结构与 Set 类似,也是不重复的值的集合 但它与 Set 有两个区别:

① WeakSet 的成员只能是对象,而不能是其他类型的值
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var ws = new WeakSet();

ws.add(1)
// TypeError: Invalid value used in weak set
ws.add(Symbol())
// TypeError: invalid value used in weak set

上面代码试图向 WeakSet 添加一个数值和 Symbol 值,结果报错,因为 WeakSet 只能放置对象

② WeakSet 中的对象都是弱引用

即垃圾回收机制不考虑 WeakSet 对该对象的引用 也就是说,如果其他对象都不再引用该对象,那么垃圾回收机制会自动回收该对象所占用的内存,不考虑该对象还存在于 WeakSet 之中 这个特点意味着,无法引用 WeakSet 的成员,因此 WeakSet 是不可遍历的

3、WeakSet 实例的操作方法

① WeakSet.prototype.add(value)

WeakSet 实例添加一个新成员

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var ws = new WeakSet();
var obj = {};

ws.add(window);
ws.add(obj);

ws  // WeakSet {{…}, Window}

输出结果详情:

② WeakSet.prototype.delete(value)

清除 WeakSet 实例的指定成员

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var ws = new WeakSet();
var obj = {};

ws.add(window);
ws.add(obj);

ws  // WeakSet {{…}, Window}

ws.delete(window);

ws  // WeakSet {{…}}
③ WeakSet.prototype.has(value)

返回一个布尔值,表示某个值是否在 WeakSet 实例之中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var ws = new WeakSet();
var obj = {};

ws.add(window);

ws.has(window); // true
ws.has(obj);    // false

注意

  • WeakSet 没有 size 属性,没有办法遍历它的成员
  • WeakSet 不能遍历,是因为成员都是弱引用,随时可能消失,遍历机制无法保证成员的存在,很可能刚刚遍历结束,成员就取不到了
  • WeakSet 的一个用处,是储存 DOM 节点,而不用担心这些节点从文档移除时,会引发内存泄漏
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-12-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
快手智能视频图像编码处理服务架构
在视频服务飞速发展的今天,视频平台如何在兼顾机器带宽成本的同时,让用户获得更加极致的观看体验,是每一个视频技术团队都会面临的问题。
LiveVideoStack
2021/02/20
4.4K0
快手智能视频图像编码处理服务架构
视频化升级新思路 —— StreamLake音视频技术创新与应用
LiveVideoStackCon 2022 音视频技术大会 北京站即将在11月4日至5日召开,本次大会将延续「音视频+无限可能」的主题,音视频技术在整体大环境的影响下,近年来呈现出迅猛的发展趋势。一方面,视频技术能力的普及,面向现有业务及场景视频化发展的道路存在相当激烈的竞争,从底层技术革新到针对实际场景的业务逻辑优化。另一方面,随着更多新概念、新技术的涌现,未来从生产到消费音视频在哪些新的业务、产品及场景下能够创造更多新的价值是我们迫切需要思考的问题。 视频化升级新思路  ——StreamLake音视频
LiveVideoStack
2022/09/28
4520
视频化升级新思路 —— StreamLake音视频技术创新与应用
【品牌专场】视频化升级新思路 —— StreamLake音视频技术创新与应用
LiveVideoStackCon 2022 音视频技术大会 北京站即将在11月4日至5日在北京丽亭华苑酒店召开,本次大会「StreamLake」品牌技术专场重磅加盟,将为大家分享StreamLake在媒体处理、媒体传输协议、播放器等方向上最新进展与落地应用。值得一提的是本届所有专场将以免费报名的方式邀请大家参与交流,同时我们也为参与专场的同学准备了现场惊喜大奖,让大家在LiveVideoStackCon的活动中真正的身心都愉悦。 扫描图中二维码或点击阅读原文,免费参与品牌专场活动,现场惊喜大奖等你拿!
LiveVideoStack
2022/10/11
6730
【品牌专场】视频化升级新思路 —— StreamLake音视频技术创新与应用
【主编连线】对话快手StreamLake —— 探索音视频技术与服务体验升级之路
点击上方“LiveVideoStack”关注我们 视频化已是各行业大势所趋,面对飞速增长和更加多元化的音视频服务需求,在实际场景下探索如何能够通过现有技术更加完美的组合,或是引入更多新的技术,寻求以最低的成本实现更加极致的用户体验,创造更多业务可能,是目前各行业所关注的重点之一。 3月23日晚 7:00,我们特别邀请到了 快手音视频首席架构师 刘歧 以及 快手视频图像算法引擎负责人 陈宇聪 两位老师,和大家一同聊聊快手StreamLake在探索音视频技术升级,追求极致用户体验与业务创新道路中所做的工作,以
LiveVideoStack
2023/04/04
5970
【主编连线】对话快手StreamLake —— 探索音视频技术与服务体验升级之路
快手质臻影音:视频智能修复及增强技术
  //   编者按:快手平台上视频类型繁多,且视频源的画面质量存在较大差异。“面对种类多且质量差异较大的视频,如何让用户获得更清晰的观看体验?”对于这一问题,快手音视频技术团队深入研究智能音视频修复及增强处理等相关技术,打造“快手质臻影音”,为用户提供极致视频体验。本次LiveVideoStackCon 2022上海站大会,我们邀请到了快手音视频高级算法工程师何刚老师,为我们分享了快手平台视频多样性和处理挑战;针对这些挑战提出的智能修复和增强算法;以及质臻影音的落地方案。 文/何刚 整理/LiveVide
LiveVideoStack
2022/10/11
1.5K0
快手质臻影音:视频智能修复及增强技术
智能处理与编码算法产品化;媒体传输协议的演进与未来;音视频播放技术与消费体验升级
智能处理与编码算法产品化 Topic 《快手智能处理与编码算法产品化之路》 陈宇聪  快手 视频图像算法引擎负责人 视频转码过程中涉及方方面面的视频图像算法,如何将算法有机地结合起来,打造成为行业领先的视频转码算法产品?通过多年的业务场景打磨和积累,快手音视频走出了一条自己的产品化之路。 本演讲将详细介绍视频图像引擎Atlas和智能转码算法框架CAPE的发展历程,以及「质臻影音」「质臻轻流」等转码产品的推出和应用。 媒体传输协议的演进与未来 Topic 《媒体传输协议的演进与未来》 周超  快手 传输算法负
LiveVideoStack
2023/02/23
6090
智能处理与编码算法产品化;媒体传输协议的演进与未来;音视频播放技术与消费体验升级
因为一项技术的加持,我的视频画质更「香」了
机器之心原创 作者:蛋酱 回忆起一年多前那场「倒计时应战」,每一位参与的快手音视频技术团队成员都历历在目。 当时,国际巨星成龙即将在快手开通全球首个短视频社交账号。这次官宣势必会聚集全球各地的大量粉丝,这也意味着每条作品都将应对数亿用户「挑剔」的视觉诉求。如何让成龙大哥的快手首秀做到「令人惊艳」,从技术层面来说是个难题。 针对此次项目中对画质的诉求,团队彻夜奋战,「定制化」推出了高画质点播档位和策略,采用短视频特殊转码为视频画质提供了最优保障,让画面中每一处细节都能清晰、细腻地呈现出来。 从「决定要做」到「
机器之心
2023/03/29
9440
因为一项技术的加持,我的视频画质更「香」了
腾讯V265编码器:给用户以完备的265体验
大家好,我是张贤国,毕业后长期从事于视频编码标准制定(HEVC、VVC),以及视频编码器(H.265)研发工作,2017年加入腾讯,主要负责视频编码研发相关工作。本次分享将重点介绍V265编码器的业务体验优化,包括码率控制优化以及业务适配相关的优化。主要内容可以分为三个部分,首先简单介绍V265的最新情况,然后重点讲解V265在码率控制方面所做的一些优化,最后会介绍V265编码器在业务落地过程中遇到的一些问题与解决方案。
LiveVideoStack
2019/09/17
4.8K0
腾讯V265编码器:给用户以完备的265体验
【专题介绍】视频编解码性能优化与实现
” “音视频+无限可能”是一扇 LiveVideoStackCon面向新兴领域开启的大门,在移动互联网红利消失、内卷的局面下,智能车、制造、金融、医疗、出海等新兴领域还在迫切追寻新技术带来的增值。在“音视频+无限可能”,提前看到新机会、新案例、新实践。 5月20日-21日,LiveVideoStackCon 2022 上海站,和你一同开启通向未来的大门。 视频编解码性能优化与实现 视频编解码技术不断迭代的背后,是来自人们对交互体验提出更高清、更沉浸、更低延时的更高要求。为了满足人们对视频的需求,各大厂家对H
LiveVideoStack
2022/04/08
1.3K0
【专题介绍】视频编解码性能优化与实现
攻城狮手记 | 既高清又低码?腾讯明眸帮你两者兼得
随着近几年视频行业的井喷,短视频、社交媒体、电商带货、视频会议等泛媒体类应用大规模增长,人们对高画质、低延时的需求愈发强烈。 而腾讯明眸正是聚焦于“极速高清”和“画质重生”两大功能,利用腾讯云领先的编解码和媒体处理技术与AI技术融合打造的音视频技术品牌。在各类媒体业务中,腾讯明眸都能够为用户提供画质更好,码率更低的媒体处理服务。 下面我们就一同来了解一下这个让你能够“鱼与熊掌兼得”的黑科技以及它背后的工程师团队吧! “17年,音视频应用平台开始将关注点转向带宽成本、观看体验。我们也在这个时候开
腾讯云音视频
2021/09/28
1.2K0
王豪:HW265到“HW266”
LiveVideoStack:王豪你好,向LiveVideoStack的读者介绍下自己,以及您(或您团队)目前负责工作和感兴趣的技术方向。
LiveVideoStack
2021/09/01
8280
腾讯云张贤国:北大将我从少年变成了技术研究者
张贤国:很荣幸能成为LVS讲师中的一员。本人2003-2013年就学于北京大学,博士毕业后在MediaTek从事了两年HEVC相关标准的提案工作,并一作采纳8项提案。2015年加入仟壹后被并购至金山云,专门从事自己富有兴趣的领域——高性能高速视频编码器的研发工作。2017年来到腾讯,作为专家工程师和技术负责人之一,与同事们合力自研了腾讯服务端编码器V265。目前作为云架构平台部-编码内核组的负责人,仍专注于商用视频编解码器的研发工作。
LiveVideoStack
2019/08/12
9240
腾讯云张贤国:北大将我从少年变成了技术研究者
沉浸式视频技术应用与挑战
文 / 蔡媛 整理 / LiveVideoStack 直播回放: https://mudu.tv/live/watch/general?id=o6deva3l&referVisitorId=28133
LiveVideoStack
2021/02/20
1.1K0
快手硬核ToB第一枪:视频能力对外开放,自研芯片首次曝光
明敏 鱼羊 发自 凹非寺 量子位 | 公众号 QbitAI 就在今天,快手正式对外官宣了自研芯片的进展: 云端智能视频处理SoC芯片已经流片成功,并正在进行线上内测。 △快手高级副总裁、StreamLake业务负责人于冰介绍快手自研芯片情况 关键是,随着这一波造芯成果而来的,还不只一个大动作。 更确切地说,快手这把是直接在业务上开启了完全不同以往的尝试: 做了11年ToC产品的快手,现在正式推出视频云服务StreamLake,宣告进军云服务市场。 快手ToB第一枪:StreamLake 要说清楚这事儿
量子位
2022/08/26
5830
快手硬核ToB第一枪:视频能力对外开放,自研芯片首次曝光
腾讯包揽15项世界第一:新一代视频编码器
其中,Tencent TVC在全场各类编码器总计15项指标中取得14个第一,第一总数最多。在各编码赛道中,Tencent266编码器包揽H.266赛道15项指标全部第一;Tencent V265编码器包揽H.265赛道15项指标全部第一;Tencent TXAV1编码器包揽AV1赛道15项指标全部第一。此外,TencentAVS3编码器在比赛中也展现了很强的竞争力,标志着腾讯在国家自主知识产权视频编解码上又迈出坚实一步。
腾讯技术工程官方号
2024/08/09
3850
腾讯包揽15项世界第一:新一代视频编码器
MSU编码大赛放榜丨腾讯Tencent266斩获12项第一,压缩性能行业领先
近日公布的MSU FullHD编码大赛结果中,腾讯编码器包揽所有15项关键指标全部第一。腾讯自研的最新一代视频编解码标准VVC/H.266编码器Tencent266,以出色的压缩性能和节省带宽的能力取得了12项第一,第一总数最多,并在H.266赛道中取得15项关键指标全部第一。
腾讯多媒体实验室
2023/08/03
3800
MSU编码大赛放榜丨腾讯Tencent266斩获12项第一,压缩性能行业领先
汇聚音视频新能量 探索行业新蓝海
视频行业卷成红海,如何突破瓶颈,去探索行业的新蓝海,本次LiveVideoStackCon 2022北京站邀请到快手高级副总裁、研发线负责人于冰,以《汇聚音视频新能量,探索行业新蓝海》为题,从视频行业趋势和痛点出发,结合快手自身的探索、演进历程,分享技术变革和突破的思路,寻求行业新增长点。 文/于冰 编辑/LiveVideoStack 本次分享包括三部分,第一是行业困境,第二是寻求痛点即是寻求机会,第三是探索行业新蓝海。 -01- 行业困境,寒冬尽头未见暖阳 在经历了蓄势、转型、爆发三个阶段后,中国短视
LiveVideoStack
2023/04/18
5630
汇聚音视频新能量  探索行业新蓝海
技术解码 | 视频云全链路媒体处理解决方案
随着近几年视频行业的爆发增长,各个业务场景对视频处理的需求越来越高。本周的技术解码就由段争志老师带大家一起探秘腾讯云视频云全链路媒体处理解决方案中的关键技术。 近几年视频行业喷井式爆发,短视频APP、社交媒体、电商带货、直播会议、线上教育等等各种泛媒体类应用大规模增长的同时,人们对高清/超高清、低延时、高画质的需求也越来越强烈。腾讯云视频云依托自身多年的视频技术的积累以及众多业务应用的落地优化实践,不断完善自身产品体系,优化性能,结合用户业务场景不断创新,提供一整套集视频质检、画质修复增强、编码、
腾讯云音视频
2020/08/17
2.6K0
全场最佳!腾讯编码器包揽15项指标全部第一
由莫斯科国立大学举办的MSU世界视频编码器大赛结果揭晓。在全部参赛编码器中,腾讯编码器包揽所有15项指标的全部第一,再次斩获全场最佳。
腾讯云音视频
2024/08/19
2320
全场最佳!腾讯编码器包揽15项指标全部第一
音视频算法在淘宝中的应用
近年来,内容业务在行业蓬勃发展。淘宝也在积极进行内容化转型,本次LiveVideoStackCon 2021 上海站大会我们邀请到了阿里巴巴淘系技术高级算法专家——王立波(庄恕),回顾淘宝从图文到短视频直播的发展历程,介绍音视频算法在其中的应用和未来的投入方向包括编解码、视频处理、音频通讯与互动。
LiveVideoStack
2021/09/01
1.2K0
音视频算法在淘宝中的应用
推荐阅读
相关推荐
快手智能视频图像编码处理服务架构
更多 >
LV.0
这个人很懒,什么都没有留下~
目录
  • 一、Set
    • 1、Set 的基本用法
    • 2、Set 对数组进行去重
    • 3、Set 实例的属性
      • Set.prototype.constructor
      • Set.prototype.size
    • 4、Set 实例的操作方法
      • ① add(value)
      • ② delete(value)
      • ③ has(value)
      • ④ clear()
    • 5、Set 实例的遍历方法
      • ① keys()
      • ② values()
      • ③ entries()
      • ④ forEach()
    • 6、Set 遍历的应用
      • ① 并集(Union)
      • ② 交集(Intersect)
      • ③ 差集(Difference)
  • 二、WeakSet
    • 1、WeakSet 的基本用法
    • 2、WeakSet 与 Set 的区别
      • ① WeakSet 的成员只能是对象,而不能是其他类型的值
      • ② WeakSet 中的对象都是弱引用
    • 3、WeakSet 实例的操作方法
      • ① WeakSet.prototype.add(value)
      • ② WeakSet.prototype.delete(value)
      • ③ WeakSet.prototype.has(value)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档