Книга: Выразительный JavaScript
Объекты без прототипов
Объекты без прототипов
Но кроличья нора на этом не заканчивается. А если кто-то зарегистрировал имя hasOwnProperty
в объекте map
и назначил ему значение 42? Теперь вызов map.hasOwnProperty
обращается к локальному свойству, в котором содержится номер, а не функция.
В таком случае прототипы только мешаются, и нам бы хотелось иметь объекты вообще без прототипов. Мы видели функцию Object.create
, что позволяет создавать объект с заданным прототипом. Мы можем передать null
для прототипа, чтобы создать свеженький объект без прототипа. Это то, что нам нужно для объектов типа map
, где могут быть любые свойства.
var map = Object.create(null);
map["пицца"] = 0.069;
console.log("toString" in map);
// ? false
console.log("пицца" in map);
// ? true
Так-то лучше! Нам уже не нужна приблуда hasOwnProperty
, потому что все свойства объекта заданы лично нами. Мы спокойно используем циклы for
/in
без оглядки на то, что люди творили с Object.prototype
.
- Глава 10 Информационная безопасность бизнеса
- Объекты DataSet с множеством таблиц и объекты DataRelation
- ЧАСТЬ IV. База данных и ее объекты.
- Восстановление "безнадежных" баз данных. InterBase Surgeon
- Система безопасности InterBase
- Физические объекты
- Общие рекомендации по безопасности
- Надежность и безопасность
- Безопасная работа с внешними таблицами
- Конфигурация безопасности для базы данных
- Интегрированная безопасность (NT Integrated Security)
- Безопасность временных таблиц