Tengo una clase configurada con claves de cadena, como esta:
class MyClass { constructor() { this.id = 0 this.data = [] } "GET /data"(req, res) { res.json(this.data) } }El objetivo es recorrer dinámicamente las funciones en una instancia como esta:
for (let key in new MyClass()) { console.log(key) } Sin embargo, todo lo que he intentado solo ha dado como resultado la id y data de las claves.
Puedo obtener manualmente la función y ejecutarla bien:
let item = new MyClass() item["GET /data"]()Pero no aparece en ninguna enumeración dinámica que haya probado.
Establecer manualmente la enumeración también funciona:
class MyClass { constructor() { this.id = 0 this.data = [] // Here!!! Object.defineProperty(this, "GET /data", { value: this["GET /data"], writable: false, enumerable: true, configurable: true }) } "GET /data"(req, res) { res.json(this.data) } } console.log(Object.keys(new MyClass())) // ["id", "data", "GET /data"]Pero eso frustra el propósito de hacerlo dinámicamente. ¿Hay alguna forma de obtener dinámicamente los nombres de las funciones con claves de cadena o hacer enumerables todas las propiedades?