我正在尝试创建一个记录器来输出一条消息和调用它的类,如下所示:
const __log = (...values: Array<any>) =>
console.log("%c" + this.constructor["name"], CLASS_STYLE, ...values);
这个工作很好,但我想保持干燥,如果可能的话导入一次,然后在需要的地方调用。我正在考虑将其添加为 window.__log
,但当然 this 的范围存在问题。
更改范围的最佳方式是什么?
我正在寻找某种 bind()
、call()
、apply()
技巧/巫术来实现这一点工作 (;
示例铺板在这里:http://plnkr.co/edit/sLdAsbv8FgO4V1qfqQZM (使用 Angular2 组件)。删除类 App
中的 //const __log ...
注释将显示我想要得到的内容。
最佳答案
您可以通过这样做来归档您想要的内容:
function __log(...values: Array<any>)
{
console.log("%c" + arguments.callee.caller.name, CLASS_STYLE, ...values)
}
如果您想更深入,这里有一些关于获取完整调用堆栈的更多信息:link
关于javascript - 更改范围( "this"的值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35476253/