为什么concat函数返回一个带窗口的数组?

时间:2013-10-15 09:31:39

标签: javascript

我正试图围绕这个javascript片段:

(_=[].concat)()[0]

它返回窗口,但为什么?

1 个答案:

答案 0 :(得分:1)

将其分解为组件后,更容易理解发生了什么。

您基本上可以将此代码段重写为:

Array.prototype.concat.call(this)[0]

当您调用某个函数时,它会从this之前的对象获取其.上下文,因此函数调用object.toString()将其this引用设置为{ {1}}。但是,当函数没有包含对象时,其上下文将默认为全局范围,即浏览器中的objectwindow通常会使用它所调用的现有数组上下文作为基本数组来连接,但在这种情况下concat是上下文,所以它被强制转换为数组然后连续应用于它,但由于没有提供任何连接,它只返回一个带有上下文的数组,即窗口。