Javascript 更改范围(“this”的值)

Javascript 更改范围(“this”的值),javascript,console,typescript,Javascript,Console,Typescript,我正在尝试创建一个记录器,它输出一条消息和调用它的类,如下所示: const __log = (...values: Array<any>) => console.log("%c" + this.constructor["name"], CLASS_STYLE, ...values); const\uu log=(…值:数组(带Angular2组件)。删除类App中的//const\uu log…注释将显示我想要的内容。您可以通过这样做来归档您想要的内容: functi

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

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

const\uu log=(…值:数组(带Angular2组件)。删除类
App
中的
//const\uu log…
注释将显示我想要的内容。

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

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

function\uu log(…values:Array

在问题中,您使用带有箭头符号的ES6
(…)=>{…}
(它固定了
这个
的值),而在示例(plunker)中,您使用的是一个普通的旧
函数(){…}
。哪个版本是“正确的”一个?@Andreas我一直在尝试不同的方法,请参阅更新的plunker。任何有效的解决方案都是“正确的”解决方案(:谢谢,这是非常有用的。我最终使用了类似的()方法来解释嵌套。您的示例仅在构造函数中有效。