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 istHinweis: 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: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!