这里面是我的代码:获取的函数名对象
var structure = {
A: function() {
this.B();
},
B: function() {
console.log(arguments.callee.caller.toString());
}
};
然后我运行:
structure.A();
正如你明白,我试图让调用函数的名称,但结果是空字符串。有任何想法如何做到这一点?
这里面是我的代码:获取的函数名对象
var structure = {
A: function() {
this.B();
},
B: function() {
console.log(arguments.callee.caller.toString());
}
};
然后我运行:
structure.A();
正如你明白,我试图让调用函数的名称,但结果是空字符串。有任何想法如何做到这一点?
我已经添加了函数名称A,并稍微更改了获取要打印的字符串的语句。这是否做你想要的?
var structure = {
A: function A() {
this.B();
},
B: function() {
console.log(arguments.callee.caller.name);
}
}
structure.A();
我可以在没有重命名的情况下得到相同的结果吗? –
我不这么认为。可能有任何数量的变量被分配给你的匿名函数,如果你想得到它,函数需要有自己的名字。你为什么要这样做?也许你可以考虑一种不同的方法,完全避免这种情况? – Iain
那么,这两个函数都没有名称。属性名称在技术上不是函数的名称。相关:http://stackoverflow.com/q/17557957/218196。但问题是:为什么要这样做?你想解决什么问题? –
我猜测OP确实希望'arguments.callee.caller.toString()'在他调用'structure.B()'时返回'A'。那是正确的,@snith? –
是的,你是对的。 –