2016-12-14 16 views

回答

12

現在的答案是

[[FunctionLocation]]屬性,你看到在檢查中V8Debugger::internalProperties()在調試器的C++代碼,使用另一個C++函數V8Debugger::functionLocation()收集關於功能的信息補充。 functionLocation()然後使用許多特定於V8的C++ API(例如v8::Function::GetScriptLineNumber() and GetScriptColumnNumber())來查找確切的信息。

上述所有的API都是C++代碼專用的,而不是JavaScript代碼。如果您試圖在像Node.js這樣的平臺上完成此任務,那麼您應該可以編寫本地模塊。如果不是,那麼你的運氣不好。

0

console.log可以在Chrome中顯示函數名稱limited language support

我發現這個函數名在調試回調以及使用observer pattern時很有用。注意這需要命名函數才能工作(匿名函數名稱顯然是空白的)。

function myFn() {} 

if (typeof myFn === 'function') { 
    console.log('Name of function', myFn.name) 
} 

輸出Name of function myFn