這裏面是我的代碼:獲取的函數名對象
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? –
是的,你是對的。 –