Javascript,array concat将Windows对象添加到结果数组中,但它不';我不适合Firefox

Javascript,array concat将Windows对象添加到结果数组中,但它不';我不适合Firefox,javascript,google-chrome,firefox,Javascript,Google Chrome,Firefox,我尝试了一些javascript,发现了一些奇怪的行为。 在引用array.concat函数并调用它之后,它的结果现在有了Window对象(Crome浏览器,Firefox不运行代码) 有什么问题吗 代码如下: var data = []; var c = data.concat; var someArray = ["a"]; var data2 = c(someArray); console.log(data2); 你可以试试 谢谢您的时间。您使用的是数据。concat没有将作用域设置为数据

我尝试了一些javascript,发现了一些奇怪的行为。 在引用array.concat函数并调用它之后,它的结果现在有了Window对象(Crome浏览器,Firefox不运行代码)

有什么问题吗

代码如下:

var data = [];
var c = data.concat;
var someArray = ["a"];
var data2 = c(someArray);
console.log(data2);
你可以试试


谢谢您的时间。

您使用的是
数据。concat
没有将作用域设置为
数据
,因此它在全局对象的作用域中运行,在本例中是
窗口

如果要连接
数据
someArray
,则需要使用
调用
来设置
concat
函数的范围:

var data2 = c.call(data, someArray);
要创建
data.concat
的快捷方式,可以使用
bind
始终在
data
的范围内运行它:

var c = data.concat.bind(data);
var data2 = c(someArray);

所以你想做一个函数
c
,它基本上是
concat
的快捷方式?是吗?+1我正要发布
bind
选项,否则每次都需要指定上下文。c=data.concat是否应该已经将数据范围作为默认值?
data.concat
实际上是指向
Array.prototype.concat
的指针,在全局范围内运行,除非在实例上调用。谢谢。很抱歉我提出了这些不切实际的问题。:)