2013-02-26 7 views
6

Próbuję iterować nad wszystkimi metodami w pseudoklasy JavaScript i mogę łatwo stwierdzić, czy coś jest metodą, czy nie (np.możliwość wystąpienia funkcji), jednak staram się uwzględnić metody, które mogą być ukryte przed ... w pętli przez defineProperty z flagą przeliczalną ustawioną na false - jak mogę iterować wszystkie elementy pseudoklasy, niezależnie od przeliczalnej wartości?W jaki sposób przeprowadzasz iterację nad wszystkimi metodami w pseudoklasy JavaScript, niezależnie od tego, czy są one oznaczone jako przeliczalne?

Odpowiedz

7

Zawsze można użyć wartości Object.getOwnPropertyNames, która będzie zawierać również właściwości nieprzeliczalne. Nie obejmuje to jednak właściwości z prototypów, więc jeśli pytasz o "instancje pseudoklasowe", może być konieczne uzyskanie loop the prototype chain z Object.getPrototypeOf.

+0

Dzięki, masz trochę karmy. – CoryG

+1

Korekta, w 8 minut możesz mieć jakąś karmę - przeklęta strona myśli, że jestem botem lub coś takiego. – CoryG

+0

co, jeśli podczas inspekcji mogę zobaczyć właściwość, ale nie pojawia się ona pod 'getOwnPropertyNames' ani' keys'? Przykład: 'typof obj ['stuff'] == 'function'; Object.getOwnPropertyNames (this) .indexOf ("stuff") == -1'. Zdarzyło się to w klasie ES6, babelifikacja. – igorsantos07

Powiązane problemy