首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用数组作为参数新建WeakMap?

如何用数组作为参数新建WeakMap?
EN

Stack Overflow用户
提问于 2018-07-25 09:20:04
回答 3查看 2K关注 0票数 3

我一直在阅读关于WeakMap的MDN文档。它还提到了语法:

new WeakMap([iterable])

但当我试着这样做时,出现了错误:

代码语言:javascript
复制
var arr = [{a:1}];
var wm1 = new WeakMap(arr);

未指定的TypeError:无效值用作弱映射键

你能给我举个例子,说明如何通过数组来完成这个任务吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-25 09:27:21

文件上说:

Iterable是Array或其他可迭代对象,其元素是键值对(2元素数组)。

{a: 1}是一个对象,而不是一个2元素数组.

下面写着:

WeakMaps的键仅为对象类型。

因此,您不能在WeakMap中使用字符串作为键。

尝试:

代码语言:javascript
复制
var obj = {a:1};
var arr = [[obj, 1]];
var wm1 = new WeakMap(arr);
console.log(wm1.has(obj));

票数 5
EN

Stack Overflow用户

发布于 2018-07-25 09:26:36

您需要一个2D数组,比如[[key1, value1], [key2, value2]]。由于您没有密钥,所以在这里使用WeakSet会更合适。

票数 3
EN

Stack Overflow用户

发布于 2018-07-25 09:27:21

来自MDN

Iterable是Array或其他可迭代对象,其元素是键值对(2元素数组)。

键必须是对象,并且值可以是任意值。

所以:

代码语言:javascript
复制
var o = {a:1};
var arr = [[o, 10]];
var wm1 = new WeakMap(arr);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51515285

复制
相关文章

相似问题

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