Javascript,数组连接将 Windows 对象添加到结果数组,但它不适用于 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);

可以试试http://jsfiddle.net/Dhf9S/3/

感谢您的宝贵时间。

最佳答案

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

如果你想连接datasomeArray,你需要使用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/

相关文章:

Firefox 只显示空白页 - 甚至大约 :config is just white

css - 仅使用 CSS 创建带有粘性标题和列的 HTML 表格

html - Firefox hr 不透明度显示不同

javascript - 我正在尝试通过返回击键运行 javascript 函数,但是我的语法是错误的

javascript - 使用键的文本字符串访问 JSON 对象的特定部分

javascript - 如何将消息从backgroundjs发送到chrome扩展中的内容脚本?

html - child 的边缘影响祖先包括 body

firefox - 在 Firefox 开发人员工具的网络监视器中,“预览”选项卡始终为空

javascript - Offset ().top - 距顶部 50%?

javascript - 基于 JavaScript 对象的键创建一个数组