Подписаться на мой список электронной почты сейчас http://jauyeung.net/subscribe/
Следуй за мной в Twitter в https://twitter.com/AuMayeung
Много других статей в https://medium.com/@hohanga
Еще больше статей на http://thewebdev.info/
С 2015 года JavaScript улучшился невероятно.
Намного приятнее использовать его сейчас, чем когда-либо.
В этой статье мы посмотрим на карты и слабые карты.
Итерация и зацикливание через карты
Мы можем проиграть и петлю через карты с различными методами.
Map.prototype.entries Возвращает объект ITERABLE с массивами из пары-массивов ключей для каждой записи нашей карты.
Map.prototypee.foreach принимает обратный вызов, который имеет подпись (значение, ключ, коллекция) чтобы позволить нам петлю через карту.
ценность имеет значение записи карты.
ключ имеет ключ ввода карты.
Коллекция имеет саму карту.
2-й аргумент этого является значение Это внутри обратного вызова.
Map.prototype.keys Возвращает утечку с ключами карты.
Map.prototye.values Возвращает передачу всех значений на карте.
Map.prototype [Symboly.iterator] это метод по умолчанию для итерации через карты.
Возвращает утечку с парой клавишной пары.
Слабый
Слабыми помалами работают в основном как карты.
Ключи слабой – объекты. Они слабо проводятся.
Мы не можем получить обзор всех записей с помощью слабака.
И мы не можем очистить слабое значение.
Мы должны поставить в объекты как ключи, поэтому мы не можем написать;
const wm = new WeakMap()
wm.set('foo', 123);
С тех пор, как мы сделаем ImeError, делаю это.
Но мы можем написать:
const wm = new WeakMap()
wm.set({}, 123);
Ключи слабака слабо проводятся.
Это означает, что объект, который не относится к чему подобное объекту или свойство, может быть собранным мусором.
Мы не можем получить доступ к ним, если они где-то не проводятся.
Как только ключ исчезнет, то запись исчезнет.
Мы не можем получить обзор слабого управления.
Это потому, что нет никаких способов осмотреть его внутренности.
Единственный способ получить содержимое слабака – получить контент ключом.
Корпус использования слабого управления включает в себя такие вещи, как кэширование, управление слушателями и сохранение частных данных.
С сласными покролами мы можем кэшировать объект с ним, так как мы можем иметь только объектные клавиши.
Например, мы можем написать:
const cache = new WeakMap();
function countOwnKeys(obj) {
if (cache.has(obj)) {
return cache.get(obj);
} else {
const num = Math.random();
cache.set(obj, num);
return num;
}
}
Чтобы создать слабое значение и получить запись Если ключ существует
В противном случае мы добавляем запись в слабое значение.
Мы также можем использовать их для хранения слушателей в слабом карте.
Например, мы можем написать:
const listeners = new WeakMap();
function addListener(obj, listener) {
if (!listeners.has(obj)) {
listeners.set(obj, new Set());
}
listeners.get(obj).add(listener);
}
У нас есть AddListener Функция для добавления слушателя событий на множество, если оно еще не существует.
Если obj Не в слабом виде, то мы создаем запись обман как ключ и набор в качестве значения.
Это также полезно для хранения частных данных, поскольку нам нужна ссылка на ключевой объект, чтобы получить запись.
Итак, мы можем написать:
const _counter = new WeakMap();
class Countdown {
constructor(counter) {
_counter.set(this, counter);
}
increment() {
let counter = _counter.get(this);
if (counter < 1) {
return;
}
counter++;
_counter.set(this, counter);
}
}
хранить счетчик В слабом виде с Установить Способ вызова в конструкторе.
В увеличение Метод, мы получаем счетчик с _Counter.get метод.
Затем мы увеличиваем счетчик и установить новое значение с Установить Отказ
Вывод
Мы можем произойти через карты с различными методами.
Кроме того, слабые карты могут использоваться для хранения частных данных, кэширования и многого другого.
Пост Лучший из современных JavaScript – карты и слабые карты появился первым на Веб dev Отказ
Оригинал: “https://dev.to/aumayeung/best-of-modern-javascript-maps-and-weakmaps-ngp”