首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向WeakSet或WeakMap添加对象是否会以任何方式改变该对象?

向WeakSet或WeakMap添加对象是否会以任何方式改变该对象?
EN

Stack Overflow用户
提问于 2022-07-22 14:57:43
回答 1查看 43关注 0票数 -2

我假设添加到WeakSet和/或WeakMap中的对象以某种方式进行标记以表示成员身份。如果是这样的话,这个标记在用户代码中可见吗?

例如:

代码语言:javascript
复制
const go = () => {
  const o = {}
  s.add(o)
  return o
}
const s = new WeakSet
const o = go()
// can I detect that `o` is in a WeakSet, just by inspecting `o`?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-22 15:12:48

不,这在用户代码中是不可见的。您需要访问WeakMap/WeakSet实例本身来测试成员资格。这是emulate truly private properties in classes的习惯。

“标记”所包含的对象充其量是实现细节(以及类似于该was used in most polyfills的东西),但它们也可能以任何其他方式实现。关于引擎中的实际实现,我唯一能找到的是Sigurd Schneider's talk

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73082354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档