为什么 concat 函数返回一个带有窗口的数组
Why does the concat function return an array with window in it?
我试图围绕这个javascript片段:
(_=[].concat)()[0]
它返回窗口,但为什么?
将其分解为组件后,更容易理解发生了什么。
您基本上可以将此代码段重写为:
Array.prototype.concat.call(this)[0]
当你调用一个函数时,它会从.
之前的对象获取其this
上下文,因此函数调用object.toString()
的this
引用将设置为 object
。但是,当函数没有包含对象时,其上下文将默认为全局范围,这意味着浏览器中的window
。 concat
通常会使用调用它的现有数组上下文作为要连接的基本数组,但在这种情况下window
是上下文,因此它被强制转换为数组,然后 concat 应用于它,但由于没有提供任何要连接的内容,它只返回一个带有上下文的数组, 这是窗口。
相关文章:
- 用javascript将数据从一个窗口传递到另一个窗口
- 创建一个方法,通过一个窗口进行迭代并获取Titanium中的所有控件
- 从另一个窗口访问document.getElementById
- notify.js没有'如果另一个窗口被聚焦,则不显示通知
- 使用YUI或ExtJS将隐藏的DIV变成一个窗口
- 从另一个窗口对链接触发单击事件
- Atom Electron:在另一个窗口中渲染画布
- 使用Javascript单击选择按钮时,在另一个窗口上显示图像
- Javascript/Jquery如何在另一个窗口中检测点击
- 用JavaScript打开一个新窗口,然后关闭前一个窗口
- 使用Javascript/jQuery在当前窗口后面打开一个窗口
- 从另一个窗口调用 iframe
- 在系统焦点使用Electron的地方打开一个窗口
- 将图像数组从一个窗口传递到另一个窗口,并在javascript的新窗口中显示图像
- 一键在一个窗口中打开两个不同的链接图像
- IE10在打开窗口并再次打开另一个窗口时不起作用
- 你怎么知道javascript是否无法打开一个窗口
- 使用 javascript 打开一个窗口,并从外部源加载 HTML 内容
- 仅在一个窗口中播放声音,该窗口使用javascript(可能是jquery)处于活动状态(在一个网站内)
- 用钛将一个窗口移动到另一个窗口