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
5
A
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.
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" ....] –
@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