Обновить

Комментарии 19

Зачем создавать какие-то хитрые хранилища с помощью Object.create(null), если во всех вменяемых браузерах скоро будет ES6 Map/Set, а в старых браузерах все равно Object.create нету?
Лично у меня, в должностных инструкциях, прописано IE9+. Вот и приходится, на все новые технологии, только слюни пускать.
Спасибо, посмотрю.
Хочется отметить, что в Google Closure Tools уже довольно давно «много вкусненького», чем я и пользуюсь, уже не один год, без вреда для должностных.
Поддерживаю, Google Closure библиотека и инструменты несколько недооценённые хипстерами, а ведь в них уже много детских и взрослых проблем решено и действительно есть много вкусненького и причём давно. Недаром на ней основные проекты гугла работают. Хорошее промышленное решение.
Да, не то что эти хипстеры, которые сделали ангуляр.
НЛО прилетело и опубликовало эту надпись здесь
Вы перепутали оператор in с оператором for-in
НЛО прилетело и опубликовало эту надпись здесь
Вас бы устроило иногда взрывающееся ружьё?
'__proto__' in Object.create(null) вернёт true только в устаревших версиях ноды (до 0.10-какойто, не помню точно), и то только потому, как используют древнюю версию v8. На современных серверных платформах и всех актуальных браузерах, где присутствует __proto__, это только геттер / сеттер в Object.prototype, так что можно не бояться его наличия.
SaferCache совсем не безопасен. Установка свойства по ключу hasOwnProperty сломает методы has и get коллекции, установка объекта по ключу __proto__ тоже может их сломать.
Словари на базе Object.create(null), в некоторых случаях, штука нужная и полезная, но абстракция над доступом к свойствам убивает все преимущества перед Map. Моё мнение и реализация расписаны здесь — кроме Map, в core-js присутствует конструктор Dict. Подобный конструктор периодически обсуждают на собраниях tc39 и, надеюсь, со временем он таки появится в стандарте языка. Хотя Google SoundScript просто запрещает использование Object в качестве словарей, оставляя для этого только Map.
Что-то я не понял терминологии. Может всё-таки хэш (hash), а не кэш (cache)? Хотя у Вас в коде явно cache. Что кэширует данный класс?
Именно кэш (cache).
Кэшировать можно все что угодно, от результатов запросов до результатов расчетов, тут исключительно дело вкуса и поставленной задачи.
Но надо учесть, что я все-таки не автор, а переводчик ;)
Именно о неточности перевода я и говорил. Интересно было бы увидеть пример использования такого кэша…
А можно конструктивно о неточностях перевода?
Я может и «завалился на бок» пытаясь балансировать между литературностью и дословностью, но по-моему все не так плохо.
Да, всё отлично, меня именно смутил cache.
И всё-таки это map :-)
Прежде всего это объект унаследованный от null, а применений ему можно найти кучу.
Я одного понять не могу: откуда человек решил что речь все-таки идет о хэш…
IMHO вспоминается старый анекдот, что чукча не читатель, а писатель.
Нет никакого «наследования от null». null — специальное значение, означающее «отсутствие объекта». __proto__ === null означает отсутствие наследования, а не «наследование от null».

А человек правильно подумал, что речь идёт об использовании объекта в качестве мапки, она же хеш-таблица.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации