Heim  >  Artikel  >  Web-Frontend  >  JavaScript bestimmt, ob das Objekt ein Array ist

JavaScript bestimmt, ob das Objekt ein Array ist

黄舟
黄舟Original
2017-02-24 13:09:49864Durchsuche


1. typeof

Das erste, woran wir denken werden, ist die Verwendung von typeof, um den Datentyp zu erkennen, aber für Grundtypen wie Funktion, String, Zahl, Undefiniert usw. Es kann mit typeof erkannt werden. Der Code lautet beispielsweise 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 es nicht zufriedenstellend, wenn typeof verwendet wird, um sie zu erkennen, denn wann Wir erkennen Arrays oder reguläre Ausdrücke. Wenn ja, ist der zurückgegebene Typ ein Objektobjekt, wie im folgenden Code gezeigt:

console.log(typeof []);  // object
console.log(typeof /\d+/g); // object

2Instanceof

Daraus können wir uns leicht vorstellen Verwenden von „instanceof“ zum Erkennen eines Objekts. Dieser Test gibt einen booleschen Wert zurück. Wenn es sich um ein Array handelt, gibt er „true“ zurück, andernfalls werfen wir einen Blick auf den obigen Code, um zu testen, ob dies der Fall ist ein Array:

console.log([] instanceof Array);  // true
console.log(/\d+/g instanceof Array); // false

Wie oben können Sie sehen, dass mit der Instanz von tatsächlich festgestellt werden kann, ob es sich um ein Array-Element handelt;

3 Konstruktorattribut

In Javascript, Jedes Objekt verfügt über ein Konstruktorattribut, das auf den Initialisierungskonstruktor des Objekts verweist, z. B. auf die Bestimmung des Typs des unbekannten Objekts. 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 handelt, indem Sie die Methode isArray Liezi 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. bei der Verwendung eines Cross-Arrays. Frame-Iframe Bei der Verwendung von Arrays auf der Seite schlägt dies fehl, da die in verschiedenen Iframes erstellten Arrays ihre Prototypattribute nicht miteinander teilen. Der folgende Codetest kann wie oben überprüft werden Es gibt für uns keine Möglichkeit festzustellen, ob ein Objekt ein Array ist, aber wir können anhand von ECMA262 erkennen, dass wir die Methode Object.prototype.toString.call() verwenden können, um festzustellen, ob ein Objekt ein Array ist:

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

Das Obige ist der Inhalt von JavaScript, um zu bestimmen, ob das Objekt ein Array ist. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

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


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