输出wm应该是得到 undefined ,另外,即使是输出wm1.get(key1) 怎么会得到 val2 的结果呢?
应该更正为: alert(wm1.get(key1)); // val1 alert(wm1.get(key2)); // val2 alert(wm1.get(key3)); // val3有误之处是书中的示例代码部分:
// 原始值可以先包装成对象再用作键 const stringKey = new String("key1"); const wm3 = new WeakMap([ stringKey, "val1" ]); alert(wm3.get(stringKey)); // "val1"这里会报错: 因此,下面的 alert(wm3.get(stringKey));" 根本不会执行。
应该更正为: const wm3 = new WeakMap([ [stringKey, "val1"] ]);需要将键/值对用中括号包裹,否则会抛出错误。