Javascript,array concat将Windows对象添加到结果数组中,但它不';我不适合Firefox
我尝试了一些javascript,发现了一些奇怪的行为。 在引用array.concat函数并调用它之后,它的结果现在有了Window对象(Crome浏览器,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没有将作用域设置为数据
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
的指针,在全局范围内运行,除非在实例上调用。谢谢。很抱歉我提出了这些不切实际的问题。:)