Слабая карта в Javascript - PullRequest
0 голосов
/ 29 апреля 2018

Вы можете уточнить, почему логическое значение используется при добавлении объектов в WeakMaps в коде ниже. Я понимаю, что множество принимает два (ключ и значение) аргумента. Логические значения также выводятся на консоль ... это мое сомнение ...

Заранее спасибо.

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}

1 Ответ

0 голосов
/ 29 апреля 2018

WeakMap не просто хранит объекты (это Set - отличается от .set).

Он устанавливает отношения между двумя вещами, ключом и ценностью. book1 используется в качестве ключа для значения true.

Как и в простом объекте var obj = { daysInWeek: 7 }, строка daysInWeek связана (сопоставлена!) С числом 7, так что obj["daysInWeek"] === 7.

Массивы тоже похожи - числа (индексы) сопоставляются со значениями; var arr = [ "praveen" ] отображает число 0 в строку "praveen", так что arr[0] === "praveen".

Map s и WeakMap s одинаковы, но ключи не ограничиваются строками или числами, они также могут быть объектами. Итак library.get( book1 ) === true.

...