Ответ 1
Object.keys()
выполняет итерацию только перечислимых свойств объекта. И методов ES6 нет. Вы можете использовать что-то вроде getOwnPropertyNames()
. Также методы определены на прототипе вашего объекта, поэтому вам понадобится Object.getPrototypeOf()
, чтобы получить их. Рабочий пример:
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);
}
Обратите внимание, что если вы используете Symbols как ключи методов, вам нужно будет использовать getOwnPropertySymbols()
, чтобы перебирать их.