- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
标准是这样说的,毫无疑问,原始类型不能用作 WeakMap
中的键。 ;但什么是 技术原因添加这样的限制?
我想实现一个简单的 hash
将 JS 值映射到 0-65535 的函数,如果使用 WeakMap
将是微不足道的;不幸的是,我需要散列任何东西(包括符号和字符串),但这是禁止的,我想知道为什么。
最佳答案
WeakMap
s 旨在将一个弱引用对象映射到另一个对象。原始类型,例如 String
, Number
等等都是强引用的,并且以一种方式设计,当您分配 String
时value 到变量它不会分配对源字符串的引用,而是将该值复制到新变量(因此,例如,当您更改源变量时,新变量不会更改)。
弱引用对象被垃圾收集。当脚本的任何部分都没有使用它时,它将被删除并释放内存。 JS 中的原始类型是强引用的(值被复制,而不是被引用),因此垃圾收集器永远不会触发删除该值,以及删除映射中的强引用、原始类型键(这与整个想法相冲突)的 WeakMap
)。
但是如果你仍然需要使用原始值作为 WeakMap
的键,您可以尝试一些解决方法,例如将原始值包装在某个对象中,然后将该对象用作键。
关于javascript - 在 WeakMap 中禁止原始类型作为键的技术原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60024604/
我一直在阅读有关 WeakMap 的 MDN 文档。它提到了语法: new WeakMap([iterable]) 但是当我尝试这个时,发生了错误: var arr = [{a:1}]; var wm
这个问题在这里已经有了答案: JavaScript(ES6) WeakMap garbage collection when set an object to null (2 个答案) 关闭 4 年
我在使用 javascript 处理类的私有(private)成员时遇到了一个问题,我自己无法解决。 "use strict"; var privateData = new WeakMap(); cl
class Cat { storage = new Map() constructor(id) { if(storage.has(id)) return storage.get(id
JavaScript WeakMap不允许您通过设计获得 key 、长度或大小。 是否有可能以某种方式循环访问条目? 如果不是.. Chrome 控制台是如何做到这一点的? 最佳答案 Is it po
我正在构建 Ionic 应用程序并且一切正常,但是当我将我的源代码克隆到另一台机器时,出现如图所示的错误。 虽然应用程序在第一台机器上编译没有错误,但我检查了 Ionic、npm、typescript
标准是这样说的,毫无疑问,原始类型不能用作 WeakMap 中的键。 ;但什么是 技术原因添加这样的限制? 我想实现一个简单的 hash将 JS 值映射到 0-65535 的函数,如果使用 WeakM
为什么在 WeakMap 中不能直接访问项目?当垃圾收集器删除作为 WeakMap 键的链接时,与此键相关联的值也会被删除吗? 最佳答案 通过“直接访问项目”,我假设您的意思是为什么它们不可枚举?这是
这个问题在这里已经有了答案: How to iterate over a WeakMap? (3 个答案) Why will ES6 WeakMap's not be enumerable? (2
我的父/子关系如下所示。 parent.children = [child]; child.parent = parent; 当删除对 parent 和 child 的所有其他引用时,这是否会导致内存
我在我的 VS 中使用 typescript 1.6,当我尝试使用 WeakMap 时,我发现 Typescript 无法识别名称 WeakMap。 var _mdSideNav: typeof
ECMAScript 6中引入的WeakMap数据结构的实际用途是什么? 由于弱映射的键创建了对其对应值的强引用,因此确保已插入弱映射的值永远不会消失,只要其键还活着,它不能用于备忘录表、缓存或您通常
WeakMap polyfill尝试在不可扩展对象上定义属性时抛出错误。这些位于一堆节点、javascript 代码和库的中间,因此我实际上无法指出导致问题的原因。还有许多其他库也有自己的 polyf
我正在尝试基于 Angular 2 + Universal & ASP.NET Core Advanced Starter 构建门户 不幸的是,这个解决方案包含内置的“WeakMap”集合,即 com
我遇到了JavaScript library实现跨浏览器WeakMap在ES5中。 (WeakMap 预计用于 ES6。) 如果没有 JavaScript 语言本身的支持,这怎么可能工作? 编辑:需要
在我重新进入 JavaScript(及相关)之前,我已经完成了大量的 ActionScript 3,其中有一个带有弱键的 Dictionary 对象,就像即将推出的 WeakMap 一样;但 AS3
我有一个 memoized fn,其中 fn 由两个输入引用内存: let NewRefCursor = memoized( (deref, swap) => refToHash(deref)
我正在探索新的 ES6 功能:WeakMap。我从在 MDN 上找到的基本示例开始。 我遇到的问题是无法循环 WeakMap 元素。我收到错误: Uncaught TypeError: weakMap
我遇到了JavaScript library实现跨浏览器WeakMap在ES5中。 (WeakMap 预计用于 ES6。) 如果没有 JavaScript 语言本身的支持,这怎么可能工作? 编辑:需要
我正在使用 JavaScript weakmaps,在 google chrome 开发者控制台中尝试这段代码后,使用 --js-flags="--expose-gc"运行,我不明白为什么 weakm
我是一名优秀的程序员,十分优秀!