Javascript 为什么js认为我的数组在某些环境中不是数组?

Javascript 为什么js认为我的数组在某些环境中不是数组?,javascript,Javascript,我正在JVM浏览器中运行一些Javascript。我已经声明了一个原型方法来帮助我推进到非常大的阵列中 Array.prototype.extend=函数(其他数组){ if(其他_数组===数组) other_array.forEach(函数(v){this.push(v)},this); 其他的 log(“不是数组”); } 它在被调用时的工作方式是: arrayA.extend(arrayB); 我知道我正在扩展数组。在一个环境中,一切都很好。在不同的环境中,该方法认为arrayB不是

我正在JVM浏览器中运行一些Javascript。我已经声明了一个原型方法来帮助我推进到非常大的阵列中

Array.prototype.extend=函数(其他数组){
if(其他_数组===数组)
other_array.forEach(函数(v){this.push(v)},this);
其他的
log(“不是数组”);
}
它在被调用时的工作方式是:

arrayA.extend(arrayB);
我知道我正在扩展数组。在一个环境中,一切都很好。在不同的环境中,该方法认为arrayB不是数组,这是错误的

有什么线索吗

编辑:两种环境中的阵列检查实际上都失败了。我的问题是forEach循环中抛出了一个与JDK相关的错误,该错误在更新我的JDK后消失了。如果(other_array===array)几乎不会工作,除非您传递的实际上是
窗口。array
构造函数,例如:

arrayA.extend(Array); // this will fulfill the `if`, but it will then throw an error
// because the Array constructor has no forEach method
数组实例永远不会满足
==Array

但是您可以使用
Array.isArray
来代替,这是一种可靠的跨环境方法,用于检查某个对象是否是数组:

Array.prototype.extend = function (other_array) {
    if(Array.isArray(other_array)) {
        other_array.forEach(function(v) {this.push(v)}, this);
    } else {
        console.log("not an array");
    }
}

if(other_array===array)other_array.forEach(…)
array
不是一个数组,就像汽车的蓝图不是汽车一样。请花点时间通读一遍,了解您应该如何格式化代码块。这在哪种环境下工作?我对此持怀疑态度,因为
other_array===array
不是检查某个东西是否是数组的有效方法。谢谢,数组检查现在可以了。prototype函数仍然会在一个环境中抛出一个错误。我在查看java日志文件后发现了这个错误。这是一个java错误,它在更新我的JRE后消失了