MDN may have intermittent access issues April 18 13:00 - April 19 01:00 UTC. See whistlepig.mozilla.org for all notifications.

mozilla
Your Search Results

    Object.prototype.hasOwnProperty()

    Сводка

    Метод hasOwnProperty() возвращает логическое значение, указывающее, содержит ли объект указанное свойство.

    Синтаксис

    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');   // вернёт true
    changeO();
    o.hasOwnProperty('prop');   // вернёт false
    

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

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

    o = new Object();
    o.prop = 'существует';
    o.hasOwnProperty('prop');             // вернёт true
    o.hasOwnProperty('toString');         // вернёт false
    o.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 из прототипа Object
    Object.prototype.hasOwnProperty.call(foo, 'bar'); // true
    

    Обратите внимание, что в последнем случае новые объекты не создаются.

    Спецификации

    Спецификация Статус Комментарии
    ECMAScript 3rd Edition. Стандарт Изначальное определение. Реализована в JavaScript 1.5.
    ECMAScript 5.1 (ECMA-262)
    Определение 'Object.prototype.hasOwnProperty' в этой спецификации.
    Стандарт  
    ECMAScript 6 (ECMA-262)
    Определение 'Object.prototype.hasOwnProperty' в этой спецификации.
    Черновик  

    Совместимость с браузерами

    Возможность Chrome Firefox (Gecko) Internet Explorer Opera Safari
    Базовая поддержка (Да) (Да) (Да) (Да) (Да)
    Возможность Android Chrome для Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    Базовая поддержка (Да) (Да) (Да) (Да) (Да) (Да)

    Смотрите также

    Метки документа и участники

    Contributors to this page: nurbek.ab, Nick_Pershin, Mingun, teoli
    Обновлялась последний раз: Mingun,
    Скрыть боковую панель