javascript - 更改范围( "this"的值)

标签 javascript console typescript

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

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/

相关文章:

javascript - 使用 Snap.svg 在 z 空间中移动 SVG 组

javascript - 使用 C# 异步回发保存 Javascript 值

ruby - 如何从 ruby​​ 中的反引号命令获取颜色?

ruby-on-rails - 无法在生产中启动 Rails 控制台

reactjs - react 导航 route.params typescript

angular - 尝试使用 HTTP.GET 使用 REST 服务时 Angular2 中的原始异常 : No provider for Http!

javascript - Monaco Editor 强制调整大小编辑器

rust - 在 Rust 中获取控制台宽度

javascript - 为什么我可以将 "never"类型分配给任何其他类型?

javascript - Windows 8 Metro 应用程序中的可下载文件路径?