我有一個使用字串鍵設定的類,如下所示:
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"]
但這違背了動態執行此操作的目的。有沒有辦法使用字串鍵動態獲取函式的名稱,或者使每個屬性都可列舉?
uj5u.com熱心網友回復:
Object.getOwnPropertyNames(MyClass.prototype)
給你
["constructor", "GET /data"]
uj5u.com熱心網友回復:
有兩種方法可以做到這一點
Object.keys(myObj)
或者
for (let key in myObj) {
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/475751.html
標籤:javascript 表示 javascript 对象
