在Javascript中获取匿名函数中的属性名称

时间:2013-05-09 21:09:09

标签: javascript methods anonymous-function

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

实施例

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

2 个答案:

答案 0 :(得分:3)

该函数没有(直接)想法引用它的属性或变量的名称。

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

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

obj.WhoAmI();

DEMO: http://jsfiddle.net/wUdNf/

只有在调用函数时将this设置为引用它的对象才能生效。

您可以使用arguments.callee而不是为该函数指定名称,但严格模式中不允许这样做。

答案 1 :(得分:1)

var obj = {
    WhoAmI: function() {
        for (var prop in this){
            if (this[prop] === arguments.callee){
                console.log(prop);  // => 'WhoAmI'
            }
        }
    }
}

obj.WhoAmI();