In diesem Artikel werden drei JavaScript-Methoden beschrieben, um zu bestimmen, ob ein Objekt ein Array ist,
1. Art von
Das erste, woran wir denken werden, ist die Verwendung von typeof, um den Datentyp zu erkennen. Bei Basistypen wie Funktion, Zeichenfolge, Zahl, Undefiniert usw. kann dies jedoch beispielsweise mithilfe von typeof erkannt werden wie folgt:
function test(){} console.log(typeof 1); // number console.log(typeof test); // function console.log(typeof "yunxi"); // string console.log(typeof undefined); // undefined
Aber für Arrays oder reguläre Ausdrücke ist die Verwendung von „typeof“ zu ihrer Erkennung nicht zufriedenstellend, denn wenn wir Arrays oder reguläre Ausdrücke erkennen, ist der zurückgegebene Typ ein Objekt, wie im folgenden Code gezeigt:
console.log(typeof []); // object console.log(typeof /\d+/g); // object
2. Instanz von
Daraus können wir uns leicht vorstellen, mit „instanceof“ zu erkennen, ob ein Objekt eine Instanz eines Arrays ist. Wenn es sich um ein Array handelt, wird „true“ zurückgegeben, andernfalls wird „false“ zurückgegeben noch einmal. Der obige Code zum Erkennen, ob es sich um ein Array handelt, lautet wie folgt:
console.log([] instanceof Array); // true console.log(/\d+/g instanceof Array); // false
Wie Sie oben sehen können, kann mit der Instanz von tatsächlich festgestellt werden, ob es sich um ein Array-Element handelt;
3. Konstruktorattribut
In JavaScript verfügt jedes Objekt über ein Konstruktorattribut, das sich auf den Konstruktor bezieht, der das Objekt initialisiert, z. B. um den Typ eines unbekannten Objekts zu bestimmen. Daher können wir eine Methode wie folgt schreiben. Der Code lautet wie folgt:
function isArray(obj) { return typeof obj == 'object' && obj.constructor == Array } // 测试demo console.log(isArray([])); // true var a = {"a":1}; console.log(isArray(a)); // false var b = [1,2,3]; console.log(isArray(b)); // true console.log(isArray(/\d+/g));// false
Wie Sie oben sehen können, können Sie auch feststellen, ob es sich um ein Array-Element handelt, indem Sie die Methode isArray aufrufen.
Wir können jetzt sehen, dass es für den zweiten und dritten Punkt so aussieht, als ob die Verwendung der Methode „instanceof“ bzw. des Konstruktorattributs bestimmen kann, ob es sich um ein Array handelt. Es gibt jedoch auch Ausnahmen, z. B. wenn ein Array auf einer Seite verwendet wird, wenn ein Kreuz verwendet wird -frame iframe. wird fehlschlagen, da die in verschiedenen Iframes erstellten Arrays ihre Prototypattribute nicht miteinander teilen; der folgende Codetest kann überprüft werden~
var iframe = document.createElement('iframe'); document.body.appendChild(iframe); xArray = window.frames[window.frames.length-1].Array; var arr = new xArray("1","2","3","4","5"); //这个写法IE下是不支持的,标准浏览器firefox,chrome下有 console.log(arr); // 打印出 ["1", "2", "3", "4", "5"] console.log(arr instanceof Array); // false console.log(arr.constructor === Array); // false
Wir können mit den oben genannten Methoden nicht feststellen, ob ein Objekt ein Array ist, aber wir können anhand von ECMA262 sehen, dass wir die Methode Object.prototype.toString.call() verwenden können um festzustellen, ob ein Objekt ein Array ist; der folgende Code:
function isArray(obj) { return Object.prototype.toString.call(obj) == '[object Array]'; } // 代码调用 console.log(isArray([])); // true console.log(isArray([1,2,3])); // true var iframe = document.createElement('iframe'); document.body.appendChild(iframe); xArray = window.frames[window.frames.length-1].Array; var arr = new xArray("1","2","3","4","5"); console.log(arr); // ["1","2","3","4","5"] console.log(isArray(arr)); // true
Das Obige ist der gesamte Inhalt dieses Artikels, der Ihnen dabei helfen soll, herauszufinden, ob ein Objekt ein Array in JavaScript ist. Ich hoffe, dass es Ihnen beim Lernen hilfreich sein wird.