Что означает '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 - доступно напрямую