Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

ความแตกต่างระหว่าง instanceof และ Array.isArray() ใน JavaScript

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