【问题标题】:WeakMap in JavascriptJavascript 中的弱映射
【发布时间】:2018-04-29 16:20:53
【问题描述】:

您能否解释一下为什么在下面的代码中向 WeakMaps 添加对象时使用布尔值。我知道 set 需要两个(键和值)参数。布尔值也会打印在控制台中……这是我的疑问……

提前致谢。

const book1 = { title: 'Pride and Prejudice', author: 'Jane Austen' };
const book2 = { title: 'The Catcher in the Rye', author: 'J.D. Salinger' };
const book3 = { title: 'Gulliver\'s Travels', author: 'Jonathan Swift' };

const library = new WeakMap();
library.set(book1, true);
library.set(book2, false);
library.set(book3, true);

console.log(library);

WeakMap {Object {title: 'Pride and Prejudice', author: 'Jane Austen'} => true, Object {title: 'The Catcher in the Rye', author: 'J.D. Salinger'} => false, Object {title: 'Gulliver\'s Travels', author: 'Jonathan Swift'} => true}

【问题讨论】:

  • 那为什么要对他们Nina使用真假值
  • @PraveenKr.Saini 你为什么不呢?您可以传递任何值作为值,在这种情况下它是布尔值。至于为什么在您发布的示例代码中选择这些,您需要询问代码的作者而不是我们。
  • 我想你不明白什么是地图?键是 book1,值是 true。
  • “这是我的疑问” 绝对不是一个真正的问题或描述性问题。用特定术语定义您的问题很重要,请参阅How to Ask

标签: javascript ecmascript-6 set weakmap


【解决方案1】:

WeakMap 不只是存储对象(这是一个 Set - 与 .set 不同)。

它在两件事之间建立关系,键和值。 book1 用作值 true 的键。

就像在普通对象var obj = { daysInWeek: 7 } 中一样,字符串daysInWeek 与数字7 相关(映射!),因此obj["daysInWeek"] === 7

数组也很相似——数字(索引)映射到值; var arr = [ "praveen" ] 将数字 0 映射到字符串 "praveen",因此 arr[0] === "praveen"

Maps 和WeakMaps 是一样的,但是键不限于字符串或数字,它们也可以是对象。所以library.get( book1 ) === true

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 2014-04-27
    相关资源
    最近更新 更多