javascript:以下示例中的“控制台”上下文是什么?

时间:2014-02-02 08:02:58

标签: javascript

通过this article阅读关于今天与HN关联的JS编码员的良好面试问题,并进入以下部分:

  

接下来,我会问一些简单的问题,旨在向我展示如何   候选人理解论证对象。我先打电话来   尚未定义的log函数。

     

log('hello world')

     

然后我会要求候选人定义log   它将其字符串参数代理为console.log()。正确的答案是   这些方面的东西,但更好的候选人往往会跳过   直接使用apply

function log(msg){   
    console.log(msg); 
}
  

一旦定义了,我改变了我调用log的方式,传递了多个   参数。我明确表示我希望log采用任意数字   争论,而不仅仅是两个。我还暗示console.log这个事实   也有多个论点。

     

log('hello', 'world');

作者解释他的解决方案的方式是通过apply

  

希望你的候选人能直接使用申请。有时   他们会因应用和通话之间的差异而被绊倒   你可以把它们推到正确的方向。通过console   背景也很重要。

function log(){
  console.log.apply(console, arguments);
};

我在这里log函数利用apply并隐式传递arguments,以便像

这样的调用
log('hello', 'world');

将传递console.log.apply(console, ['hello', 'world']),但我的问题是:此示例中的console上下文是什么,即上面apply调用中的第一个参数,以及它来自何处?

1 个答案:

答案 0 :(得分:2)

console只是定义了log函数的对象,在this函数中基本上是log,这就是它被传递的原因作为背景。 console在浏览器中不是一个特殊的词,它只是一个保存在window.console下的对象。