Jak uzyskać nazwę funkcji wywołującej w Javascript?
Rozważmy następujący przykład.
var obj = function(){};
function apply(target, obj) {
if (target && obj && typeof obj == "object") {
for (var prop in obj) {
target[prop] = obj[prop];
}
}
return target;
}
apply(obj.prototype, {
firstFunction: function (){
this.secondFunction();
},
secondFunction: function (){
// how do I know what function called me here?
console.log("Callee Name: '" + arguments.callee.name + "'");
console.log("Caller Name: '" + arguments.callee.caller.name + "'");
}
});
var instance = new obj();
instance.firstFunction();
AKTUALIZACJA
Obie odpowiedzi są naprawdę niesamowite. Dziękuję Ci. Następnie przyjrzałem się problemowi wywoływania funkcji rekurencyjnej lub nadrzędnej w obiekcie i znalazłem tutaj rozwiązanie. Pozwoli mi to pobrać nazwę funkcji bez użycia właściwości arguments.callee / caller.
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/function