1

我正在尝试一些 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/

感谢您的时间。

4

1 回答 1

3

您在使用data.concat时未将范围设置为data,因此它在全局对象的范围内运行,在本例中为window.

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

var data2 = c.call(data, someArray);

要创建 的快捷方式data.concat,您可以使用bind始终在以下范围内运行它data

var c = data.concat.bind(data);
var data2 = c(someArray);
于 2013-05-23T07:46:27.210 回答