3

是否可以在javascript中获取调用匿名函数的属性的名称?

例子

var obj = {
     WhoAmI: function() {
       //Obtain the name WhoAmI
     }
}
4

2 回答 2

3

该函数不(直接)知道引用它的属性或变量的名称是什么。

虽然取决于调用的方式,但它可以被发现。

var obj = {
     WhoAmI: function func() {
         for (var p in this)
             if (this[p] === func)
                 alert(p);
     }
}

obj.WhoAmI();

演示:http: //jsfiddle.net/wUdNf/

这仅在函数被调用并将其this集合作为引用它的对象时才有效。

您可以使用而不是给函数命名,尽管这在严格模式下arguments.callee是不允许的。

于 2013-05-09T21:12:44.650 回答
1
var obj = {
    WhoAmI: function() {
        for (var prop in this){
            if (this[prop] === arguments.callee){
                console.log(prop);  // => 'WhoAmI'
            }
        }
    }
}

obj.WhoAmI();
于 2013-05-09T21:14:56.837 回答