2013-08-30 18 views
5

Użyłem Object.defineProperty i enumerable: false do zdefiniowania kilku właściwości w obiekcie konfiguracyjnym. Jest jednak jedno miejsce w moim module, w którym chciałbym iterować po własnościach nieprzeliczalnych, a także przeliczalnych. Czy można to zrobić bez zachowania listy nazw właściwości w innym miejscu?Powtórzenie właściwości nieprzeliczalnych

Odpowiedz

8

Zgaduję, że można użyć wartości getOwnPropertyNames, która zwraca właściwości, przeliczalne lub nie.

Z dokumentów:

Zwraca tablicę wszystkich właściwości (przeliczalnych lub nie) znajdujących się bezpośrednio na dany przedmiot.

+0

Przykład, w którym potrzebowałem tego w moim projekcie: Zapętlanie wszystkich funkcji/stałych Math. var mathProps = Object.getOwnPropertyNames (Math); mathProps to ["E", "LN10", "LN2" ....] –

+0

@DanielHoward Tak, ale obejmuje również 'toSource'; którego prawdopodobnie nie chcesz. Ogólnie rzecz biorąc, musisz odfiltrować wyniki dokładnie do tego, czego oczekujesz (z białą listą lub czarną listą), więc prawdopodobnie jest to przydatne tylko w przypadku introspekcji lub kodowania serializacji i podobnych rzeczy, w których aplikujesz ogólna operacja, która nie dba o to, które właściwości są zwracane (lub który obiekt jest do niego przekazywany), po prostu potrzebuje wszystkich z nich. – jpaugh

Powiązane problemy