【问题标题】:console functions saved to variable in chrome控制台函数保存到chrome中的变量
【发布时间】:2013-01-11 06:19:41
【问题描述】:

这似乎只发生在 chrome 中,想知道是否有人知道它为什么会发生或如何解决它。

console.log('test')打印出'test'

现在如果我们保存函数

var log = console.log
log('test')

这给了我们 TypeError: Illegal invocation

控制台的所有方法都会发生同样的事情,例如错误和警告

【问题讨论】:

  • 两个字:missing context。另外三个:to the method.

标签: google-chrome console


【解决方案1】:

试试这个:

var log = console.log.bind(console);
log('test');

使用.bind,您将为console 提供正确的上下文(即自身)以进行操作。

【讨论】:

  • 为什么我们不预先绑定console.log
  • 不确定,肯定有道理。
  • 是的,我也想知道,为什么它会丢失上下文
  • @AbrahamAdam 这就是 JS 的工作方式:所有方法,除非特别绑定,如果你从它们的实例中“分离”它们,就会失去它们的上下文。
  • 或者,试试log.call(console, "test")
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 2019-10-29
  • 2020-07-02
  • 1970-01-01
  • 1970-01-01
  • 2016-09-09
  • 1970-01-01
相关资源
最近更新 更多