Array.isArray() মেথড সার্বজনীন (universal), এটি যেকোনো পরিবেশে কাজ করে; কিন্তু instanceof অপারেটর সার্বজনীন নয়, এটি নতুন পরিবেশে (new environment) কাজ করে না।
সিনট্যাক্স-১
Array.isArray(array);
সিনট্যাক্স-২
array instanceof 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
এখন একটি নতুন পরিবেশ (new environment) বা নতুন ফ্রেম তৈরি করে দেখি 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