2013-08-30 1 views
5

Я использовал Object.defineProperty и enumerable: false, чтобы определить несколько свойств объекта конфигурации. Однако в моем модуле есть одно место, где я хотел бы перебирать неперечислимые свойства, а также перечислимые. Можно ли это сделать, не сохраняя список имен свойств в другом месте?Итерация по неперечислимым свойствам

ответ

8

Я думаю, вы могли бы использовать getOwnPropertyNames, который возвращает свойства, перечисляемые или нет.

Из документов:

Возвращает массив всех свойств (перечислимых или нет), найденных непосредственно на данном объекте.

+0

Пример, где мне это нужно в моем проекте: Цитирование через все математические функции/константы. var mathProps = Object.getOwnPropertyNames (Math); mathProps тогда ["E", "LN10", "LN2" ....] –

+0

@ DanielHoward Да, но также включает 'toSource'; которые вы, вероятно, не хотите. В общем, вам нужно обязательно отфильтровать результаты точно так, как вы ожидаете (либо с помощью белого списка, либо с черным списком), поэтому он, вероятно, полезен только для интроспекции или кода сериализации, и тому подобное, где вы применяете общая операция, которая не заботится о том, какие свойства возвращаются (или какой объект передан ей), им просто нужны все из них. – jpaugh