Comments 19
Зачем создавать какие-то хитрые хранилища с помощью Object.create(null), если во всех вменяемых браузерах скоро будет ES6 Map/Set, а в старых браузерах все равно Object.create нету?
+2
Лично у меня, в должностных инструкциях, прописано IE9+. Вот и приходится, на все новые технологии, только слюни пускать.
0
github.com/zloirock/core-js, babeljs.io/ — вот вам слюнявчик.
+2
Спасибо, посмотрю.
Хочется отметить, что в Google Closure Tools уже довольно давно «много вкусненького», чем я и пользуюсь, уже не один год, без вреда для должностных.
Хочется отметить, что в Google Closure Tools уже довольно давно «много вкусненького», чем я и пользуюсь, уже не один год, без вреда для должностных.
+1
Поддерживаю, Google Closure библиотека и инструменты несколько недооценённые хипстерами, а ведь в них уже много детских и взрослых проблем решено и действительно есть много вкусненького и причём давно. Недаром на ней основные проекты гугла работают. Хорошее промышленное решение.
0
UFO just landed and posted this here
Вас бы устроило иногда взрывающееся ружьё?
+2
'__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
.+4
Что-то я не понял терминологии. Может всё-таки хэш (hash), а не кэш (cache)? Хотя у Вас в коде явно cache. Что кэширует данный класс?
+1
Именно кэш (cache).
Кэшировать можно все что угодно, от результатов запросов до результатов расчетов, тут исключительно дело вкуса и поставленной задачи.
Но надо учесть, что я все-таки не автор, а переводчик ;)
Кэшировать можно все что угодно, от результатов запросов до результатов расчетов, тут исключительно дело вкуса и поставленной задачи.
Но надо учесть, что я все-таки не автор, а переводчик ;)
-1
Именно о неточности перевода я и говорил. Интересно было бы увидеть пример использования такого кэша…
+1
И всё-таки это map :-)
0
Прежде всего это объект унаследованный от null, а применений ему можно найти кучу.
Я одного понять не могу: откуда человек решил что речь все-таки идет о хэш…
IMHO вспоминается старый анекдот, что чукча не читатель, а писатель.
Я одного понять не могу: откуда человек решил что речь все-таки идет о хэш…
IMHO вспоминается старый анекдот, что чукча не читатель, а писатель.
-1
Sign up to leave a comment.
Создание объектов унаследованных от null на Node.js