2013-02-26 2 views
6

Я пытаюсь перебрать все методы в псевдослове JavaScript и легко определить, является ли что-то методом или нет (obj.member instanceof Function), однако я пытаюсь включить методы, которые могут быть скрыты от a для ... в цикле через defineProperty с перечислимым флагом, установленным в false - как я могу повторять все члены псевдокласса, независимо от перечислимого значения?Как вы перебираете все методы в псевдоклассе JavaScript, независимо от того, отмечены ли они перечислимыми или нет?

ответ

7

Вы всегда можете использовать Object.getOwnPropertyNames, который будет включать в себя неперечислимые свойства. Однако это не будет включать свойства прототипов, поэтому, если вы спрашиваете о «псевдоклассах», вам может понадобиться loop the prototype chain с Object.getPrototypeOf.

+0

Спасибо, немного кармы. – CoryG

+1

Исправление, через 8 минут у вас может быть какая-то карма - проклятый сайт, думаю, я бот или что-то в этом роде. – CoryG

+0

Что делать, если при проверке я могу увидеть свойство, но оно не появляется под 'getOwnPropertyNames' или' keys'? Пример: 'typeof obj ['stuff'] == 'function'; Object.getOwnPropertyNames (this) .indexOf ('stuff') == -1'. Это произошло на классе ES6, который был обновлен. – igorsantos07