Một cách đơn giản, tôi muốn sử dụng là arguments.callee.caller.name
.
Giả sử bạn muốn biết chuyện gì đang kêu gọi một chức năng gọi là myFunction:
function myFunction() {
console.log(arguments.callee.caller.name);
/* Other stuff... */
}
Các trình duyệt hỗ trợ cho điều này là không phải là rất lớn, tuy nhiên, do đó bạn có thể sử dụng arguments.callee.caller.toString() thay thế. Lưu ý rằng điều này sẽ cho bạn trở lại nội dung của hàm được gọi là myFunction, vì vậy bạn sẽ cần phải tự mình khai thác tên hàm.
Hoặc, bạn có thể sử dụng một đẹp stack trace chức năng như thế này:
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 qua http://www.amirharel.com/2010/01/25/using-caller-and-callee-for-stack-trace/
Điều này sẽ giúp: http://stackoverflow.com/questions/280389/how-do-you-find-out-the-caller-function-in-javascript – Sid
Một liên kết khác http://stackoverflow.com/questions/147891/javascript-exception-stack-trace –