这个很简单,以console.log举例吧

由于严格模式不能使用callercalleearguments,因此使用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的调用栈,而整理了这个方法。