Geu*_*uis 8 javascript function
我正在尝试获取当前正在运行的函数的名称.根据我的阅读,这应该可以使用:
(arguments.callee.toString()).match(/function\s+(\[^\s\(]+)/)
Run Code Online (Sandbox Code Playgroud)
但是,当我在Firefox和Safari(Mac上的最新版本)中运行它时,不会返回该名称.
console.log(arguments.callee)返回函数的源,但不返回指定的名称.arguments.callee.name返回一个空字符串.
我的示例代码如下:
var testobj = {
testfunc: function(){
console.log( (arguments.callee.toString()).match(/function\s+(\[^\s\(]+)/) );
}
}
testobj.testfunc();
Run Code Online (Sandbox Code Playgroud)
Eri*_*ier 10
你声明了一个匿名函数
function(){
Run Code Online (Sandbox Code Playgroud)
你应该声明它
function testfunc(){
Run Code Online (Sandbox Code Playgroud)
打印名称.
典型的arguments.callee hacks在这里不起作用,因为你所做的事情被分配了一个匿名函数作为对象'testfunc'键的值.在这种情况下,黑客攻击甚至变得更糟,但可以这样做,如下所示:
var testobj = {
testfunc: function(){
for (var attr in testobj) {
if (testobj[attr] == arguments.callee.toString()) {
alert(attr);
break;
}
}
}
}
testobj.testfunc();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14428 次 |
| 最近记录: |