Array.isArray()方法是通用的,它可以在任何地方运行,而instanceof运算符不是通用的,它不能在新环境中工作。
Array.isArray(array);
array instance of Array;
在以下示例中,在未创建新环境的情况下,Array.isArrar()和instanceof 都产生了相同的输出。
<html> <body> <script> var a = [1,2,3,4,5]; document.write(Array.isArray(a)); document.write("</br>"); document.write((a instanceof Array)); document.write("</br>"); var b = {} document.write(Array.isArray(b)); document.write("</br>"); document.write((b instanceof Array)); </script> </body> </html>
输出结果
true true false false
现在,让我们尝试创建一个新的环境或新的框架,以检查instanceof 运算符是否在那里工作。
在下面的示例中,使用' iframe '(一个产生类似于对象的数组的frame属性)创建一个新框架。稍后,在该新框架中创建类似对象的数组,并通过这两个函数传递。由于instanceof 不是通用的,因此它认为框架数组不是实际的数组,并作为输出返回false , 而Array.isArray()返回true ,如输出所示。
<html> <body> <script> var iframeE = document.createElement('iframe'); iframeE.style.display = "none"; document.body.appendChild(iframeE); iframeArray = window.frames[window.frames.length - 1].Array; var a = new Array(1,2,3,"hi",4, "hello"); var b = new iframeArray(1,2,3,4); document.write(Array.isArray(a)); document.write("</br>"); document.write(a instanceof Array); document.write("</br>"); document.write(Array.isArray(b)); document.write("</br>"); document.write(b instanceof Array); </script> </body> </html>
输出结果
true true true false
问题内容: 以下哪个更好? 要么 我知道的唯一区别是,当“ a”为null时,第一个返回false,而第二个抛出异常。除此之外,它们是否总是给出相同的结果? 问题答案: 使用时,您需要B在编译时知道类。使用时,它可以是动态的,并且可以在运行时更改。
问题内容: 以下哪个更好? 要么 我知道的唯一区别是,当“ a”为null时,第一个返回false,而第二个抛出异常。除此之外,它们是否总是给出相同的结果? 问题答案: 使用时,你需要B在编译时知道类。使用时可以是动态的,并且可以在运行时更改。
问题内容: JavaScript中的&和&&有什么区别? 示例代码: 似乎&&是一个逻辑上的“和”,如果两个都为true,则总是为我提供第二个值。 但是什么是&? (顺便说一下,&&在Python中似乎是“ and”;&在Python中似乎是&。) 问题答案: 是按位AND 该运算符期望 两个数字 并重新调整一个 数字。 如果它们不是数字,则将其强制转换为数字。 注意: 在Javascript中,
问题内容: 我发现自己使用JavaScript,并且遇到了和属性。我想知道它们之间有什么区别。也是一个比另一个更好? 问题答案: 了解这是Element的属性。1只有Elements具有,并且这些子元素都是Element类型的。2 但是,这是Node的属性。可以包含任何节点。3 一个具体的例子是: 大多数情况下,您想使用它,因为通常您不想在DOM操作中遍历Text或Comment节点。 如果确实要
问题内容: 我想知道JavaScript 和之间的区别。 问题答案: 在JavaScript中,表示变量已被声明但尚未分配值,例如: 是分配值。可以将其分配给变量,以表示没有值: 从前面的示例中可以明显看出,和是两个不同的类型:是类型本身(未定义),而是对象。 和
问题内容: 他们两个都应该引用同一个对象吗? 问题答案: 根据W3C,它们是相同的。实际上,出于跨浏览器安全的考虑,您应该使用而不是。