Array.isArray() เป็น universal method ทำงานได้ทุกที่ ในขณะที่ instanceof operator ไม่ใช่ universal ไม่ทำงานใน environment ใหม่ (เช่น iframe)
รูปแบบที่ 1
Array.isArray(array);
รูปแบบที่ 2
array instanceof Array;
ตัวอย่าง: ในสภาพแวดล้อมปกติ (ไม่มี environment ใหม่) ทั้งสองให้ผลลัพธ์เหมือนกัน
ตัวอย่างที่ 1 (สภาพแวดล้อมปกติ)
<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
ทดสอบสร้าง new environment (iframe) ตรวจสอบ instanceof ทำงานหรือไม่
ตัวอย่างที่ 2: สร้าง frame ใหม่ด้วย 'iframe' สร้าง array-like object ใน frame ใหม่ ส่งทั้งสองฟังก์ชัน instanceof ไม่ universal ถือว่า framed array ไใช่ array จริง คืน false ในขณะที่ Array.isArray() คืน true
ตัวอย่างที่ 2 (ใน iframe)
<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