Перечисляемые и неперечисляемые свойства

В языке JavaScript свойства объектов могут быть перечисляемыми или неперечисляемыми (встречается вариант перевода: счётные или несчётные).

Если внутреннему флагу [[Enumerable]] свойства присвоить значение true, то данное свойство становится перечисляемым. Это происходит по умолчанию для свойств, созданных простым присваиванием или через инициализацию свойств (свойства, определённые через Object.defineProperty получают по умолчанию значение флага [[Enumerable]] равным false).

Встроенные методы, наследуемые объектами, являются неперечислимыми, а свойства, добавляемые в объекты вашей программой, являются перечислимыми.

Перечисляемые свойства участвуют в итерации в цикле for...in, если только имя свойства не Символ.

____________________

Таблица определяемости свойств:

in for/in hasOwnProperty
Перечисляемые true true true
Неперчисляемые true false true
Унаследованные / Перечисляемые true true false
Унаследованные / Неперечисляемые true false false
propertyIsEnumerable in Object.keys in Object.getOwnPropertyNames
Перечисляемые true true true
Неперечисляемые false false true
Унаследованные / Перечисляемые false false false
Унаследованные / Неперчисляемые false false false

results matching ""

    No results matching ""