Pull to refresh

Comments 19

Зачем создавать какие-то хитрые хранилища с помощью Object.create(null), если во всех вменяемых браузерах скоро будет ES6 Map/Set, а в старых браузерах все равно Object.create нету?
Лично у меня, в должностных инструкциях, прописано IE9+. Вот и приходится, на все новые технологии, только слюни пускать.
Спасибо, посмотрю.
Хочется отметить, что в Google Closure Tools уже довольно давно «много вкусненького», чем я и пользуюсь, уже не один год, без вреда для должностных.
Поддерживаю, Google Closure библиотека и инструменты несколько недооценённые хипстерами, а ведь в них уже много детских и взрослых проблем решено и действительно есть много вкусненького и причём давно. Недаром на ней основные проекты гугла работают. Хорошее промышленное решение.
Да, не то что эти хипстеры, которые сделали ангуляр.
UFO just landed and posted this here
Вы перепутали оператор in с оператором for-in
UFO just landed and posted this here
Вас бы устроило иногда взрывающееся ружьё?
'__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.
Прежде всего это объект унаследованный от null, а применений ему можно найти кучу.
Я одного понять не могу: откуда человек решил что речь все-таки идет о хэш…
IMHO вспоминается старый анекдот, что чукча не читатель, а писатель.
Нет никакого «наследования от null». null — специальное значение, означающее «отсутствие объекта». __proto__ === null означает отсутствие наследования, а не «наследование от null».

А человек правильно подумал, что речь идёт об использовании объекта в качестве мапки, она же хеш-таблица.
Sign up to leave a comment.

Articles