Привет, ребята, в этой статье вы узнаете о перечисляемых свойствах в Javascript. Я предполагаю, что у вас есть знания об объекте javascript.

Итак, когда мы создаем объект, мы устанавливаем свойства и их значения. Эти свойства имеют несколько внутренних атрибутов, таких как значение, возможность записи, перечисление и настройка.

Выход:

Итак, см., что свойство «firstName» имеет значение четырех атрибутов: настраиваемое, перечисляемое и доступное для записи.

Здесь мы обсудим его перечислимость, что это такое? Как это работает?

Что означает перечисление?

Это означает, что свойство можно просмотреть, если оно повторяется с помощью цикла for..in или Object.keys() метод.

Давайте посмотрим пример:

Выход :

В приведенном выше примере все свойства отображаются как циклом for..in, так и методом Object.keys(), потому что «Все свойства, созданные простым присваиванием или инициализатором свойства, по умолчанию перечислимы ». Означает эти свойства enumerable : true.

Предположим, мы не хотим, чтобы какая-то клавиша была доступна для цикла for..in или Object.keys(), тогда мы должны сделать эту клавишу { enumerable : false }. Для этого мы будем использовать метод Object.defineProperty(), который позволяет нам изменить перечислимость ключей.

Выход :

Здесь «возраст» не будет доступен с помощью Object.keys() или цикла for..in, потому что мы установили для его перечислимости значение false. Также, если мы добавим новое свойство с помощью метода Object.defineProperty(), то по умолчанию enumerbale: false.

Выход:

Мы также можем установить перечисляемое значение при добавлении нового свойства.

Выход:

Проверить, является ли свойство перечисляемым

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

Вывод: правда, правда, ложь

firstName и age являются перечисляемыми, потому что firstName добавляется инициализатором свойства, а age добавляется простым назначением, поэтому по умолчанию для перечисляемого будет установлено значение true. Но «булавка» добавляется методом Object.defineProperty(), поэтому по умолчанию enumerable будет ложным.

Давайте посмотрим еще несколько примеров, где большое значение имеют перечислимые свойства:

Объект.создать()

См. ниже пример

Вывод: ['город']

ключ «имя» не является перечисляемым, здесь означает перечисляемый: false. Таким образом, будет доступен только «город». Вы можете сделать enumerable : true следующим образом:

Вывод: ['имя', 'город']

Точно так же в этом примере «getFoo» не является перечисляемым.

Вывод: ['foo']

Но после установки перечислимого: true Вывод будет: [‘getFoo’, ‘foo’]

Object.assign()

Как мы все знаем, этот метод копирует все собственные свойства и перечисляемые свойстваиз исходного объекта в целевой. См. пример ниже, чтобы лучше понять это:

Выход:

В объекте person2 ключа «pin» не будет, потому что в исходном объекте он не был перечисляемым (enumerable: false). Если бы в источнике он был перечислимым (перечисляемый: истина), то он был бы также доступен в person2. Давайте сделаем его доступным в person2, сделав это перечисляемым: true.

Выход :

Надеюсь, это вам очень поможет 👏👏👏