2015-07-15 5 views

ответ

30

Object.keys() итерацию перечислимых свойств объекта. И методов ES6 нет. Вы можете использовать что-то вроде getOwnPropertyNames(). Кроме того, методы определены на прототипе вашего объекта, поэтому вам понадобится Object.getPrototypeOf(), чтобы получить их. Работа example:

for (let name of Object.getOwnPropertyNames(Object.getPrototypeOf(callbacks))) { 
    let method = callbacks[name]; 
    // Supposedly you'd like to skip constructor 
    if (!(method instanceof Function) || method === Callbacks) continue; 
    console.log(method, name); 
} 

Пожалуйста, обратите внимание, что если вы используете символы в качестве ключей методы вы должны были бы использовать getOwnPropertySymbols() перебирать их.

+1

Вам также нужно сделать 'getOwnPropertySymbols'. Или используйте 'Reflect.ownKeys' – loganfsmyth

0

Нет метода итератора/геттера как Object.keys в ES6 (еще?). Вы можете, однако, использовать for-of перебрать ключей:

function getKeys(someObject) { 
    return (for (key of Object.keys(someObject)) [key, someObject[key]]); 
} 

for (let [key, value] of getKeys(someObject)) { 
    // use key/value here 
} 
+0

Я, хотя это было' for ... in' для ключей свойств и 'for ... of' для' foreach' style –

Смежные вопросы