严格模式下取得函数调用栈
这个很简单,以console.log
举例吧
由于严格模式不能使用caller
、callee
和arguments
,因此使用Error
来拿到调用栈。
代码如下:
let log = console.log;
console.log = function myLog(...args){
try{
log(...args);
throw(new Error("[!] - 检查到未被移除的Log调用:"));
}catch(e){
log(e.stack);
}
}
大概就是两步,第一步,把这个函数拿出来,第二步,用另一个函数代理,然后抛出错误,打印e.stack
即可
在尝试寻找并移除一个log提示时,为了打印该log的调用栈,而整理了这个方法。