我在尝试一些 javascript 时发现了奇怪的行为。 在引用 array.concat 函数并调用它之后,它的结果现在包含 Window 对象(Crome 浏览器,Firefox 不运行代码)。
可能是什么问题?
代码如下:
var data = [];
var c = data.concat;
var someArray = ["a"];
var data2 = c(someArray);
console.log(data2);
可以试试http://jsfiddle.net/Dhf9S/3/
感谢您的宝贵时间。
最佳答案
您正在使用 data.concat
而没有将范围设置为 data
,因此它在全局对象的范围内运行,在本例中为 window
。
如果你想连接data
和someArray
,你需要使用call
来设置concat<的范围
功能:
var data2 = c.call(data, someArray);
要创建 data.concat
的快捷方式,您可以使用 bind
始终在 data
范围内运行它:
var c = data.concat.bind(data);
var data2 = c(someArray);
关于Javascript,数组连接将 Windows 对象添加到结果数组,但它不适用于 Firefox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16708255/