是否可以获取在javascript中调用匿名函数的属性的名称?
var obj = {
WhoAmI: function() {
//Obtain the name WhoAmI
}
}
答案 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();