Назад к вопросам
Junior
171
questionbank

Что означает 'enumerable' в JavaScript?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

enumerable — это атрибут дескриптора свойства объекта в JavaScript. Он определяет, будет ли свойство перечислено при использовании циклов for...in или методов, таких как Object.keys(), Object.values() и Object.entries().

По умолчанию, большинство свойств, создаваемых с помощью оператора присваивания или литералов объектов, являются перечисляемыми (enumerable: true). Свойства, добавляемые с помощью Object.defineProperty() или Object.defineProperties(), по умолчанию не перечисляемы (enumerable: false), если явно не указано иное.

Не перечисляемые свойства не включаются в результаты этих операций, но остаются доступными для прямого доступа (например, object.property) и могут быть получены с помощью Object.getOwnPropertyNames() или Object.getOwnPropertySymbols().

Пример:

const obj = {
  a: 1, // Перечисляемое по умолчанию
};

Object.defineProperty(obj, 'b', {
  value: 2,
  enumerable: false // Не перечисляемое
});

Object.defineProperty(obj, 'c', {
  value: 3,
  enumerable: true // Явно перечисляемое
});

console.log(Object.keys(obj));
// Вывод: ['a', 'c'] - 'b' не включено

for (const key in obj) {
  console.log(key);
}
// Вывод:
// a
// c
// 'b' не перечислено циклом for...in

console.log(obj.b);
// Вывод: 2 - доступно напрямую