-2

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

提前致谢。

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}
4

1 回答 1

0

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

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

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

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

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

于 2018-04-29T16:39:30.083 回答