Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
'__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.
Создание объектов унаследованных от null на Node.js