更改范围(“this”的值)

时间:2016-02-18 08:25:12

标签: javascript console typescript

我正在尝试创建一个输出消息的记录器以及从中调用它的类,如下所示:

const __log = (...values: Array<any>) => 
  console.log("%c" + this.constructor["name"], CLASS_STYLE, ...values);

这很好用,但我想保持干燥,如果可能的话,一次导入它并在我需要的地方打电话。我正考虑将其添加为window.__log,但当然的范围存在问题。

更改范围的最佳方法是什么?

我正在寻找某种bind()call()apply()诡计/巫术来实现这项工作(;

示例planker在这里:http://plnkr.co/edit/sLdAsbv8FgO4V1qfqQZM(使用Angular2组件)。删除课程// const __log ...中的App评论会显示我想要的内容。

1 个答案:

答案 0 :(得分:0)

您可以通过这样做来存档您想要的内容:

function __log(...values: Array<any>)
{
    console.log("%c" + arguments.callee.caller.name, CLASS_STYLE, ...values)
}

如果您想深入了解,请参阅以下有关获取完整调用堆栈的更多信息:link