簡體   English   中英

Javascript 使 object 字符串鍵可枚舉

[英]Javascript make object string keys enumerable

我有一個 class 設置了字符串鍵,如下所示:

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)
}

然而,我所嘗試的一切都只產生了鍵iddata

我可以手動獲取 function 並運行它:

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"]

但這違背了動態進行的目的。 有什么方法可以動態獲取帶有字符串鍵的函數名稱,或者使每個屬性都可枚舉?

有兩種方法可以做到這一點

Object.keys(myObj)

或者

for (let key in myObj) {
}
Object.getOwnPropertyNames(MyClass.prototype)

給你

["constructor", "GET /data"]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM