【发布时间】:2016-05-14 21:05:59
【问题描述】:
在我的日志助手类中,我有以下内容:
this.myInfo = console.info.bind(console);
当我从其他地方调用我的 myInfo 函数时,调用对象和行号被正确保留并登录到 Chrome 开发工具中。
当我运行myInfo 时,除了console.info 之外,我还想运行另一个本地函数。因此,我想我可以把上面的东西包起来,它会起作用的。我想出了以下几点:
var obj = this;
this.myInfo = (function() {
console.info.apply(this, arguments);
myOtherFunc.apply(obj, arguments);
}).bind(console);
问题在于,与我的第一个示例不同,我丢失了 console.info 的调用上下文,并且在 devTools 中记录了错误的行号和文件。
如何包装第一个示例并为 console.info 保留正确的上下文?
【问题讨论】:
-
请问您为什么在控制台上使用
bind?需要吗? -
@userx01:是的,很多浏览器都需要作为方法调用。
-
你试过
console.trace吗?
标签: javascript stack-trace callstack console.log