我有一个用字符串键设置的类,如下所示:
class MyClass {
constructor() {
this.id = 0
this.data = []
}
"GET /data"(req, res) {
res.json(this.data)
}
}
我们的目标是动态循环如下所示的实例中的函数:
for (let key in new MyClass()) {
console.log(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.log(Object.keys(new MyClass())) // ["id", "data", "GET /data"]
但这违背了动态地做这件事的目的。是否有任何方法可以动态获取带有字符串键的函数的名称,或者使每个属性都可枚举?
发布于 2022-05-16 16:45:21
Object.getOwnPropertyNames(MyClass.prototype)
给你
["constructor", "GET /data"]
发布于 2022-05-16 16:40:59
有两种方法可以做到这一点
Object.keys(myObj)
或
for (let key in myObj) {
}
https://stackoverflow.com/questions/72262658
复制相似问题