Я использовал Object.defineProperty
и enumerable: false
, чтобы определить несколько свойств объекта конфигурации. Однако в моем модуле есть одно место, где я хотел бы перебирать неперечислимые свойства, а также перечислимые. Можно ли это сделать, не сохраняя список имен свойств в другом месте?Итерация по неперечислимым свойствам
5
A
ответ
8
Я думаю, вы могли бы использовать getOwnPropertyNames
, который возвращает свойства, перечисляемые или нет.
Из документов:
Возвращает массив всех свойств (перечислимых или нет), найденных непосредственно на данном объекте.
Пример, где мне это нужно в моем проекте: Цитирование через все математические функции/константы. var mathProps = Object.getOwnPropertyNames (Math); mathProps тогда ["E", "LN10", "LN2" ....] –
@ DanielHoward Да, но также включает 'toSource'; которые вы, вероятно, не хотите. В общем, вам нужно обязательно отфильтровать результаты точно так, как вы ожидаете (либо с помощью белого списка, либо с черным списком), поэтому он, вероятно, полезен только для интроспекции или кода сериализации, и тому подобное, где вы применяете общая операция, которая не заботится о том, какие свойства возвращаются (или какой объект передан ей), им просто нужны все из них. – jpaugh