Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Object.prototype.propertyIsEnumerable()

Сводка

Метод propertyIsEnumerable() возвращает логическое значение, указывающее, является ли указанное свойство перечисляемым.

Синтаксис

obj.propertyIsEnumerable(prop)

Параметры

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

Описание

Каждый объект имеет метод propertyIsEnumerable. Этот метод может определять, является ли указанное свойство в объекте перечисляемым в цикле for...in, за исключением свойств, унаследованных из цепочки прототипов. Если объект не имеет указанного свойства, метод вернёт false.

Примеры

Пример: базовое использование propertyIsEnumerable

Следующий пример показывает использование метода propertyIsEnumerable на объектах и массивах:

var o = {};
var a = [];
o.prop = 'перечисляемое';
a[0] = 'перечисляемое';

o.propertyIsEnumerable('prop');   // вернёт true
a.propertyIsEnumerable(0);        // вернёт true

Пример: определённые пользователем и встроенные объекты

Следующий пример демонстрирует перечисляемость свойств, определённых пользователем и встроенных свойств:

var a = ['перечисляемое'];

a.propertyIsEnumerable(0);          // вернёт true
a.propertyIsEnumerable('length');   // вернёт false

Math.propertyIsEnumerable('random');   // вернёт false
this.propertyIsEnumerable('Math');     // вернёт false

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

var a = [];
a.propertyIsEnumerable('constructor');         // вернёт false

function firstConstructor() {
  this.property = 'не перечисляемое';
}

firstConstructor.prototype.firstMethod = function() {};

function secondConstructor() {
  this.method = function method() { return 'перечисляемый'; };
}

secondConstructor.prototype = new firstConstructor;
secondConstructor.prototype.constructor = secondConstructor;

var o = new secondConstructor();
o.arbitraryProperty = 'перечисляемое';

o.propertyIsEnumerable('arbitraryProperty');   // вернёт true
o.propertyIsEnumerable('method');              // вернёт true
o.propertyIsEnumerable('property');            // вернёт false

o.property = 'перечисляемое';

o.propertyIsEnumerable('property');            // вернёт true

// Эти вызовы вернут false, поскольку все свойства находятся в прототипе,
// который метод propertyIsEnumerable не просматривает (даже несмотря на то,
// что последние два свойства перечисляются через цикл for...in)
o.propertyIsEnumerable('prototype');   // вернёт false (в JS 1.8.1/FF3.6)
o.propertyIsEnumerable('constructor'); // вернёт false
o.propertyIsEnumerable('firstMethod'); // вернёт false

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

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

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

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

Особый случай с Gecko

Начиная с JavaScript 1.8.1 (в Firefox 3.6), метод propertyIsEnumerable('prototype') возвращает false вместо true; это делает результат совместимым с ECMAScript 5.

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

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

 Внесли вклад в эту страницу: Mingun
 Обновлялась последний раз: Mingun,