有没有办法从外部获取函数的名称?
假设网页上有一个我们无法修改的 js 脚本,只需阅读即可。该脚本包含对象,其中包含对象和函数。假设我们要查找名为“HelloWorld”的函数。
使用 firebug,我们使用脚本循环这些对象和方法,看起来像这样
// Parameter is target object.
function getFunctionNames(obj) {
// For each objects / functions
for (var id in obj) {
// Focus only on functions
if (typeof(obj[id]) == "function") {
// Get name of the function.
// console.log("Function: " + obj[id].toString());
// Code above returns a block of code without the name. Example output:
// Function: function(name) { alert("Hello World! Hello " + name + "!"); }
//
// Expected output would be
// Function: HelloWorld
}
}
}
- obj[id].toString()返回代码块而不是名称。
- obj[id].name返回一个空字符串。匿名函数(?)。
- 我不能使用arguments.callee.name因为我不能修改目标代码。
我可以只在 firebug 中浏览对象和函数,或者只阅读源代码,但我正在寻找一种使用 Javascript 的方法。
编辑
对于现实世界的例子,前往Youtube并尝试通过 Javascript 从“yt”对象获取函数“setMsg()”的名称。
编辑2
接受西蒙的答案,因为它有点接近我正在寻找的东西。看来我是在寻找变量名,而不是函数名。虽然答案对原始问题没有帮助,但它肯定回答了原始问题。Paul Draper 的评论帮助我找到了正确的方向。
谢谢!