¿Cómo puedo enumerar métodos de una clase ES6? similar a Object.keys
Aquí hay un ejemplo:
class Callbacks { method1() { } method2() { } } const callbacks = new Callbacks(); callbacks.enumerateMethods(function(method) { // method1, method2 etc. });Object.keys() itera solo las propiedades enumerables del objeto. Y los métodos ES6 no lo son. Podría usar algo como getOwnPropertyNames() . Además, los métodos se definen en el prototipo de su objeto, por lo que necesitaría Object.getPrototypeOf() para obtenerlos. Ejemplo de trabajo:
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); } Tenga en cuenta que si usa símbolos como claves de método, necesitará usar getOwnPropertySymbols() para iterar sobre ellos.
No existe un método de iterador / captador como Object.keys en ES6 (¿todavía?). sin embargo, puede usar for-of para iterar sobre las claves:
function getKeys(someObject) { return (for (key of Object.keys(someObject)) [key, someObject[key]]); } for (let [key, value] of getKeys(someObject)) { // use key / value here }