2017-09-15 108 views
0

我想使用一個duktape/C構造函數作爲這類調用的調度程序。當調度器函數被調用時,我需要知道哪個類調用了相應的C++構造函數。如何在duktape中運行構造函數時獲取類名?

我想this綁定不會幫助,因爲它代表了我們正在創建的(尚未完全初始化的)JS對象。

另一種選擇是當前函數,但從文檔中我看不到如何從中獲取類名。我還能用什麼?

回答

0

你能詳細說一下你的意思嗎?「class name」?你的意思是用作'新'目標的Ecmascript函數對象的.name屬性?

如果是這樣,您可以使用duk_is_constructor_call()來查看當前調用是否是構造函數調用,然後使用duk_push_current_function()訪問Ecmascript構造函數對象,然後使用常用屬性API調用讀取其屬性。例如,如果通過「類名稱」表示函數對象的.name,則只需使用duk_get_prop_string()讀取它的「name」屬性即可。

+0

我不確定是否有這樣的屬性,不幸的是,我目前專注於其他事情,所以我沒有來到這裏測試。但你的建議聽起來很合理。 –

+0

使用duk_push_c_function()創建的函數對象自動沒有'name'屬性,但可以手動設置它(在這種情況下應該這樣做)。從Ecmascript代碼創建的作爲函數foo(){...}的函數對象自動具有'.name'屬性。 –

+0

是的,這就是我的結論,謝謝。 –

相關問題