Array.isArray() मेथड यूनिवर्सल है, यह कहीं भी कार्य कर सकता है जबकि instanceof ऑपरेटर यूनिवर्सल नहीं है, यह नए वातावरण में काम नहीं कर सकता।
सिंटैक्स-1
Array.isArray(array);
सिंटैक्स-2
array instance of Array;
निम्नलिखित उदाहरण में, जहां कोई नया वातावरण नहीं बनाया गया है, दोनों Array.isArray() और 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' (एक फ्रेम प्रॉपर्टी जो सरणी-जैसा ऑब्जेक्ट उत्पन्न करता है) का उपयोग करके एक नया फ्रेम बनाया जाता है। बाद में उस नए फ्रेम में एक सरणी-जैसा ऑब्जेक्ट बनाया जाता है और दोनों फंक्शन्स के माध्यम से पास किया जाता है। चूंकि 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