Ruslan_xDD, в простом Object в качестве ключа может выступать только строка, а в Map или Set любое значение, включая объекты и это просто ну мега круто, юзаю уже больше года - не нарадуюсь.
Например, на сервере (в ноде), нужно добавлять авторизованных юзеров в специальную таблицу и иметь быстрый способ проверки:
// WeakMap выбран потому, чтобы при разрыве соединения клиента с сервером,
// оно автоматически удалилось бы и из map
var map = new WeakMap();
createServer(function (req, res) {
...
// req - это специальный объект-подключения юзера, экземпляр класс ReadStream
var user = map.get(req);
if (!user ) {
map.set(req, {
sessionId: ...,
...
});
}
});
Цитата:
|
Даже если понадобится, то вряд ли заюзаю, ибо поддержка браузерами пока что плохая, и это ещё на несколько лет затянется.
|
Сейчас абсолютно все актуальные браузеры поддерживают: Map, WeakMap, Set (а вот WeakSet есть не везде), на ноде также в режиме --harmony всё работает.
Для фич вроде let или arrow function давно использую транслятор и сейчас абсолютно все мои разработки на ES6, а ES5 хочу забыть как страшный сон.
https://github.com/6to5/6to5
***
Конечно, многие вещи можно было делать и в ES5/3, и кажется зачем учить новое если есть старое, но это не правильный подход, ибо ES6 позволяет делать вещи объективно лучше и проще, а чтобы понять "зачем эти фичи", то нужно просто начать их использовать и понимание придёт.