Object.prototype.propertyIsEnumerable()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Сводка

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

Синтаксис

obj.propertyIsEnumerable(prop)

Параметры

prop

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

Описание

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

Примеры

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

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

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

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

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

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

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

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

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

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

js
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

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

Specification
ECMAScript® 2025 Language Specification
# sec-object.prototype.propertyisenumerable

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

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
propertyIsEnumerable

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

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