我一直在阅读关于WeakMap的MDN文档。它还提到了语法:
new WeakMap([iterable])
但当我试着这样做时,出现了错误:
var arr = [{a:1}];
var wm1 = new WeakMap(arr);未指定的TypeError:无效值用作弱映射键
你能给我举个例子,说明如何通过数组来完成这个任务吗?
发布于 2018-07-25 09:27:21
文件上说:
Iterable是Array或其他可迭代对象,其元素是键值对(2元素数组)。
{a: 1}是一个对象,而不是一个2元素数组.
下面写着:
WeakMaps的键仅为对象类型。
因此,您不能在WeakMap中使用字符串作为键。
尝试:
var obj = {a:1};
var arr = [[obj, 1]];
var wm1 = new WeakMap(arr);
console.log(wm1.has(obj));
发布于 2018-07-25 09:26:36
您需要一个2D数组,比如[[key1, value1], [key2, value2]]。由于您没有密钥,所以在这里使用WeakSet会更合适。
发布于 2018-07-25 09:27:21
来自MDN
Iterable是Array或其他可迭代对象,其元素是键值对(2元素数组)。
和
键必须是对象,并且值可以是任意值。
所以:
var o = {a:1};
var arr = [[o, 10]];
var wm1 = new WeakMap(arr);https://stackoverflow.com/questions/51515285
复制相似问题