★ wanayoo — archive 1999 https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnPropertyNouvelle recherche | Portail wanayoo
Your Search Results

    hasOwnProperty

    Аннотация

    Возвращает булево значение, указывающее на наличие или отсутствие у объекта указанного свойства.

    Метод объекта Object
    Реализован в JavaScript 1.5
    Версия ECMAScript ECMAScript 3-ей версии

    Синтаксис

    obj.hasOwnProperty(prop)

    Параметры

    prop
    Имя проверяемого свойства.

    Описание

    Каждый объект, происходящий от Object, наследует метод hasOwnProperty. Этот метод может быть использован для того, чтобы определить, имеет ли объект указанное свойство как непосредственное свойство данного объекта; в отличие от оператора in, этот метод не проверяет цепочку прототипов объекта.

    Примеры

    Пример: Использование hasOwnProperty для проверки существования свойства

    Следующий пример определяет, содержит ли объект o свойство с именем prop:

    o = new Object();
    o.prop = 'exists';
    
    function changeO() {
      o.newprop = o.prop;
      delete o.prop;
    }
    
    o.hasOwnProperty('prop');   //возвращает true
    changeO();
    o.hasOwnProperty('prop');   //возвращает false

    Пример: Собственные и унаследованные свойства

    Следующий пример устанавливает разницу между между собственными свойствами и свойствами, унаследованными через цепочку прототипов:

    o = new Object();
    o.prop = 'exists';
    o.hasOwnProperty('prop');             // возвращает true
    o.hasOwnProperty('toString');         // возвращает false
    o.hasOwnProperty('hasOwnProperty');   // возвращает false

    Пример: Итерация по свойствам объекта

    Следующий пример показывает, как осуществлять итерацию по свойствам объекта, пропуская унаследованные свойства. Обратите внимание, что цикл for..in перебирает только перечислимые свойства, так что не стоит, основываясь на отсутствии в данном цикле неперечислимых свойств, делать вывод о том, что hasOwnProperty ограничивается лишь исключительно перечислимыми свойствами (подобно getOwnPropertyNames).

    var buz = {
        fog: 'stack'
    };
    
    for (var name in buz) {
        if (buz.hasOwnProperty(name)) {
            alert("this is fog (" + name + ") for sure. Value: " + buz[name]);
        }
        else {
            alert(name); // toString or something else
        }
    }

    hasOwnProperty как свойство

    JavaScript не резервирует свойство с именем hasOwnProperty. Так что, при наличии потенциальной возможности, что объект может содержать одноимённое собственное свойство, для получения корректного результата требуется использовать внешний вариант функции hasOwnProperty:

    var foo = {
        hasOwnProperty: function() {
            return false;
        },
        bar: 'Да прилетят драконы'
    };
    
    foo.hasOwnProperty('bar'); // всегда возвращает false
    
    // Используем метод hasOwnProperty пустого объекта
    // и передаём foo в качестве this
    ({}).hasOwnProperty.call(foo, 'bar'); // true
    
    // Для этих целей также можно использовать функцию hasOwnProperty из прототипа Object
    Object.prototype.hasOwnProperty.call(foo, 'bar'); // true
    

    Обратите внимание, что последний способ в данном примере не создаёт новых объектов.

    См. также

    Document Tags and Contributors

    Contributors to this page: nurbek.ab, Nick_Pershin, teoli
    Last updated by: teoli,