有沒有辦法找到所有調用另一個函數的函數? (然後通過擴展,所有這些功能調用這些功能等)在javascript中獲取所有對函數的調用
我的猜測是不可能的所有情況下,但肯定可以做大多數用例,不是嗎?如果有人將其功能定義爲:
new Function('a','b', 'return a'+'+b;');
找到內部引用可能會更棘手。
在此先感謝。
有沒有辦法找到所有調用另一個函數的函數? (然後通過擴展,所有這些功能調用這些功能等)在javascript中獲取所有對函數的調用
我的猜測是不可能的所有情況下,但肯定可以做大多數用例,不是嗎?如果有人將其功能定義爲:
new Function('a','b', 'return a'+'+b;');
找到內部引用可能會更棘手。
在此先感謝。
有一個arguments.caller但它已被棄用。 Function.caller是替換,但您需要函數名稱 - 我會使用arguments.callee或直接名稱。
https://developer.mozilla.org/en/JavaScript/Reference/Functions_and_function_scope/arguments/caller
這是很好的,但我希望能夠將它應用到任何程序,而無需必須添加一堆arguments.callee的語句。本質上我想要的是JavaScript在Visual Studio中可用於C#的東西。 – user420667
比我會嘗試一些與函數的原型和調用和/或應用方法 - 試圖創建一個包裝每個函數的每個調用。但它很難/很難/不可能:D。在每個功能的基礎上執行它相當容易,但這不是你想要的。還有可能拋出+ catch和log +保存堆棧跟蹤。無論如何,JS不是C#;) - 但我想對於任何2種語言都是如此:D –
你是指源代碼的靜態分析?或者,你是指動態記錄調用函數的人嗎? – Ariel
你會如何計算這個調用:'eval(prompt(「Enter a function name」)+「()」'?:)你是否在尋找命名的調用? –
我只是談論源代碼的分析。運行時沒有公平的生成函數。 – user420667