Heim  >  Artikel  >  Web-Frontend  >  JavaScript bestimmt, ob ein Objekt ein array_javascript-Tipp ist

JavaScript bestimmt, ob ein Objekt ein array_javascript-Tipp ist

WBOY
WBOYOriginal
2016-05-16 15:24:191041Durchsuche

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.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn