Слабая карта в Javascript
Можете ли вы уточнить, почему логическое значение используется при добавлении объектов в 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 ответ
WeakMap
не просто хранить объекты (это Set
- отличный от .set
).
Это делает отношения между двумя вещами, ключом и ценностью. book1
используется в качестве ключа для значения true
,
Прямо как на простом объекте var obj = { daysInWeek: 7 }
, строка daysInWeek
связан (сопоставлен!) с номером 7
, чтобы obj["daysInWeek"] === 7
,
Массивы тоже похожи - числа (индексы) сопоставляются со значениями; var arr = [ "praveen" ]
карты номер 0
в строку "praveen"
, чтобы arr[0] === "praveen"
,
Map
с и WeakMap
Они одинаковы, но ключи не ограничиваются строками или числами, они также могут быть объектами. Так library.get( book1 ) === true
,