This page was translated from English by the community.Learn more and join the MDN Web Docs community.
Object.prototype.hasOwnProperty()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since июль 2015 г..
Сводка
МетодhasOwnProperty() возвращает логическое значение, указывающее, содержит ли объект указанное свойство.
In this article
Синтаксис
obj.hasOwnProperty(prop)
Параметры
propИмя проверяемого свойства.
Описание
Каждый объект, произошедший отObject, наследует методhasOwnProperty. Этот метод может использоваться для определения того, содержит ли объект указанное свойство в качестве собственного свойства объекта; в отличие от оператораin, этот метод не проверяет существование свойств в цепочке прототипов объекта.
Примеры
>Пример: использованиеhasOwnProperty для проверки существования свойства
В следующем примере определяется, содержит ли объектo свойство с именемprop:
o = new Object();o.prop = "существует";function changeO() { o.newprop = o.prop; delete o.prop;}o.hasOwnProperty("prop"); // вернёт truechangeO();o.hasOwnProperty("prop"); // вернёт falseПример: собственные и унаследованные свойства
Следующий пример показывает разницу между собственными свойствами и свойствами, унаследованными через цепочку прототипов:
o = new Object();o.prop = "существует";o.hasOwnProperty("prop"); // вернёт trueo.hasOwnProperty("toString"); // вернёт falseo.hasOwnProperty("hasOwnProperty"); // вернёт falseПример: обход свойств объекта
Следующий пример показывает, как итерироваться по свойствам объекта с пропуском унаследованных свойств. Обратите внимание, что циклfor...in уже проходит только по перечисляемым элементам, так что не надо на основании отсутствия не перечисляемых свойств, показываемых в цикле, считать, что методhasOwnProperty сам ограничивает свойства только перечисляемыми элементами (как это делает методObject.getOwnPropertyNames()).
var buz = { fog: "stack",};for (var name in buz) { if (buz.hasOwnProperty(name)) { alert("это точно туман (" + name + "). Значение: " + buz[name]); } else { alert(name); // toString или что-то ещё }}Пример:hasOwnProperty как свойство
JavaScript не защищает имя свойстваhasOwnProperty; таким образом, вполне может существовать объект с таким свойством, поэтому для получения правильного результата нужно использоватьвнешний методhasOwnProperty:
var foo = { hasOwnProperty: function () { return false; }, bar: "Тут драконы",};foo.hasOwnProperty("bar"); // всегда возвращает false// Используем метод hasOwnProperty другого объекта и вызываем его с передачей foo в качестве this({}).hasOwnProperty.call(foo, "bar"); // true// Также для этих целей можно использовать свойство hasOwnProperty из прототипа ObjectObject.prototype.hasOwnProperty.call(foo, "bar"); // trueОбратите внимание, что в последнем случае новые объекты не создаются.
Спецификации
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-object.prototype.hasownproperty> |
Совместимость с браузерами
Loading…