У меня есть класс, настроенный со строковыми ключами, например:
class MyClass {
constructor() {
this.id = 0
this.data = []
}
"GET /data"(req, res) {
res.json(this.data)
}
}
Цель состоит в том, чтобы динамически перебирать функции в таком экземпляре:
for (let key in new MyClass()) {
console.info(key)
}
Однако все, что я пробовал, приводило только к ключам id и data.
Я могу вручную получить функцию и запустить ее нормально:
let item = new MyClass()
item["GET /data"]()
Но он не отображается ни в одном динамическом перечислении, которое я пробовал.
Ручная установка перечисления также работает:
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.info(Object.keys(new MyClass())) // ["id", "data", "GET /data"]
Но это противоречит цели делать это динамически. Есть ли способ либо динамически получить имена функций со строковыми ключами, либо сделать каждое свойство перечисляемым?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Есть два способа сделать это
Object.keys(myObj)
или
for (let key in myObj) {
}
Object.getOwnPropertyNames(MyClass.prototype)
дает тебе
["constructor", "GET /data"]