Heim  >  Artikel  >  Web-Frontend  >  Fassen Sie 4 Möglichkeiten zur Bestimmung des Typs des js-Arrays zusammen

Fassen Sie 4 Möglichkeiten zur Bestimmung des Typs des js-Arrays zusammen

伊谢尔伦
伊谢尔伦Original
2017-07-18 11:42:451732Durchsuche

JS-Methode zur Bestimmung des Array-Typs

Methode Einsinstanceof

instance , Wie der Name schon sagt, wird „Instanz“ verwendet, um zu bestimmen, ob eine Variable eine Instanz eines Objekts ist. Es handelt sich um einen ternären Operator – der wesentlichste Unterschied zu „Typ von

einer Instanz von b?“. ("true"):alert("false") //Beachten Sie, dass der b-Wert der Datentyp ist, den Sie beurteilen möchten, keine Zeichenfolge wie Array

Zum Beispiel:


var a=[];
console.log(a instanceof Array) //返回true

Methode 2Konstruktor

Definition in W3C-Definition: Konstruktor Die Eigenschaft gibt eine Referenz zurück zur Array-Funktion, die dieses Objekt erstellt hat.

ist der Konstruktor, der dem zurückgegebenen Objekt entspricht. Die Definition stimmt nicht mit der Instanz von überein, aber der Effekt ist derselbe

Zum Beispiel: (eine Instanz von Array) //Ist a eine Instanz von Array? wahr oder falsch

  (a.constructor == Array) // Entspricht der Konstruktor einer Instanz einem Array? wahr oder falsch

Zum Beispiel:


function employee(name,job,born){
 this.name=name;
 this.job=job;
 this.born=born;
}
var bill=new employee("Bill Gates","Engineer",1985);
console.log(bill.constructor); //输出function employee(name, jobtitle, born){this.name = name; this.jobtitle = job; this.born = born;}

Dann ist die Methode zur Beurteilung verschiedener Typen:


console.log([].constructor == Array);
console.log({}.constructor == Object);
console.log("string".constructor == String);
console.log((123).constructor == Number);
console.log(true.constructor == Boolean);

Die strengere und universellere Methode:


function isArray(object){
 return object && typeof object==='object' &&
   Array == object.constructor;
}

! ! Hinweis:

Bei Verwendung von „instanceof“ und „construcor“ muss das zu beurteilende Array auf der aktuellen Seite deklariert werden! Beispielsweise verfügt eine Seite (übergeordnete Seite) über einen Frame, und in diesem Frame wird auf eine Seite (untergeordnete Seite) verwiesen, die einer Variablen der übergeordneten Seite zugewiesen wird wird beurteilt, Array == object.constructor; wird false zurückgeben; Grund:

1 die Übermittlung der Referenzadresse.
2. Die vom Array-nativen Objekt jeder Seite referenzierte Adresse ist unterschiedlich. Der entsprechende Konstruktor des auf der Unterseite deklarierten Arrays ist das Array-Objekt der übergeordneten Seite Array ist nicht gleich dem Array der Unterseiten; sonst wird es schwierig, das Problem zu verfolgen!


Methode Drei

Methode zur charakteristischen BeurteilungDie oben genannten Methoden weisen alle gewisse Mängel auf, aber wir müssen an die Meinungen glauben Die Weisheit der Menschen ist allmächtig, wir können ihren Typ anhand einiger Merkmale des Arrays beurteilen



Länge und Spleiß sind nicht unbedingt Arrays Weil Sie kann dem Objekt Attribute hinzufügen, aber das Längenattribut nicht aufzählen, es ist der wichtigste Beurteilungsfaktor.

function isArray(object){
 return object && typeof object==='object' && 
   typeof object.length==='number' && 
   typeof object.splice==='function' && 
    //判断length属性是否是可枚举的 对于数组 将得到false 
   !(object.propertyIsEnumerable('length'));
}

ps: Machen Sie die Methode propertyIsEnumerable hier bekannt:

object.propertyIsEnumerable(proName)

Bestimmen Sie, ob die angegebene Eigenschaft aufzählbar ist

Hinweis: Wenn proName im Objekt vorhanden ist und mithilfe einer For...In-Schleife erschöpft werden kann, gibt die Eigenschaft propertyIsEnumerable „true“ zurück. Die Eigenschaft „propertyIsEnumerable“ gibt „false“ zurück, wenn das Objekt nicht über die angegebene Eigenschaft verfügt oder wenn die angegebene Eigenschaft nicht aufzählbar ist.

propertyIsEnumerable-Eigenschaft berücksichtigt keine Objekte in der Prototypenkette.

Beispiel:


Methode 4
var a = new Array("apple", "banana", "cactus");
document.write(a.propertyIsEnumerable(1));

Die einfachste Methode

Das obige ist der detaillierte Inhalt vonFassen Sie 4 Möglichkeiten zur Bestimmung des Typs des js-Arrays zusammen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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