Un modo semplice mi piace usare è arguments.callee.caller.name
.
detto che volevi sapere cosa stava chiamando una funzione denominata myFunction:
function myFunction() {
console.log(arguments.callee.caller.name);
/* Other stuff... */
}
Il supporto del browser per questo che non è grande, però, così si potrebbe usare arguments.callee.caller.toString() anziché. Tieni presente che questo ti restituirà il contenuto della funzione che ha chiamato myFunction, quindi dovrai estrarre il nome della funzione da te stesso.
Oppure, si potrebbe utilizzare una bella funzione dello stack trace in questo modo:
function getStack(){
fnRE = /function\s*([\w\-$]+)?\s*\(/i;
var caller = arguments.callee.caller;
var stack = "Stack = ";
var fn;
while (caller){
fn = fnRE.test(caller.toString()) ? RegExp.$1 || "{?}" : "{?}";
stack += "-->"+fn;
caller = caller.arguments.callee.caller;
};
return stack;
}
Stack Trace via http://www.amirharel.com/2010/01/25/using-caller-and-callee-for-stack-trace/
Ciò contribuirà: http://stackoverflow.com/questions/280389/how-do-you-find-out-the-caller-function-in-javascript – Sid
Un altro link http://stackoverflow.com/questions/147891/javascript-exception-stack-trace –