我目前有以下工作代码:
Function.prototype.GetLastCallerName = function () {
if (!this.arguments || !this.arguments.callee || !this.arguments.callee.caller) return null;
var result = /^function\s+([\w\$]+)\s*\(/.exec(this.arguments.callee.caller.toString());
this.LastCaller = result ? result[1] : 'Anonymous';
return this.LastCaller;
};
我从另一个线程中获取了该代码。如您所见,它扩展了 Function.prototype 以添加一个名为 的方法GetLastCallerName
,该方法选择最后一个调用函数名称并 (1) 将其设置为LastCaller
onFunction.LastCaller
并 (2) 返回它。
为了使它工作:
function MyFunction1() {
MyFunction1.GetLastCallerName();
console.log(MyFunction.LastCaller);
}
function MyFunction2() {
MyFunction1();
}
MyFunction2();
我希望能够做的事情:消除GetLastCallerName()
每次使用和扩展的需要Function
,以便在每次调用任何函数时执行该获取。