Dieser Artikel beschreibt die Methode zur Erkennung von Datentypen in JavaScript. Wenn Sie die Methode zur Erkennung von Datentypen in JavaScript nicht kennen oder mit der Methode nicht vertraut sind Erkennen des Datentyps in JavaScript. Wenn Sie an der Methode interessiert sind, schauen wir uns gemeinsam diesen Artikel an. Kommen wir ohne weitere Umschweife zur Sache!
Lassen Sie uns vorher über die Typen von js sprechen. js hat 5 Grundtypen und einen komplexen Typ
5 Grundtypen: undefiniert, null, Zahl, Zeichenfolge, Bollean
Ein komplexer Typ: object
Rückgabewerttyp: string
wird wie folgt erkannt:
/*5大基本类型*/ var a = 123; console.log(typeof a == "number"); //true var a = '123'; console.log(typeof a == "string"); //true var a = true; console.log(typeof a == "boolean"); //true var a = undefined; console.log(typeof a == "undefined"); //true var a = null; console.log(a == null); //true /*复杂类型*/ var a = function(){}; console.log(typeof a == "function"); //true
Bei anderen Referenztypobjekten kann typeof kein Objekt erkennen und unterscheiden und gibt ein Objekt zurück, z. B. einen Datumstyp, einen Typ regulärer Ausdruck usw., sodass wir nicht unterscheiden können, was erkannt wird . (Verwenden Sie zur Erkennung andere Methoden unten)
Typ der Methoden-Funktionskapselung
function typeOf(obj){ return (obj === 'null') ? 'null' : (typeof obj) }
Fügen Sie am Ende ein spezielles NaN hinzu
console.log(typeof NaN === "number"); //true
Der Instanzoperator kann verwendet werden, um zu erkennen, ob ein Objekt eine Instanz eines anderen Objekts ist
Syntax: Objekt1 Instanz von Objekt2
Parameter: Objekt1 – ein Objekt, Konstruktor – ein anderes Objekt
Rückgabewerttyp: Boolescher Wert Boolescher Wert
Wie sind die obigen abstrakten Wörter zu verstehen?
Mit anderen Worten, auf das Prototypobjekt des Konstruktorobjekts kann über die Prototypenkette des Instanzobjekts zugegriffen werden. Dies zeigt auch, dass es Instanzof nicht darum geht Das Objekt selbst kümmert sich nur um die Beziehung zwischen Objekten und Konstruktoren.
var a = new Date(); console.log(a instanceof Date); //true console.log(a instanceof Object); //true var a = new RegExp('123'); console.log(a instanceof RegExp); //true console.log(a instanceof Object); //true var a = function(){}; console.log(a instanceof Function); //true console.log(a instanceof Object); //true var a = []; console.log(a instanceof Array); //true console.log(a instanceof Object); //true var a = {}; console.log(a instanceof Object); //true
Hier habe ich die am häufigsten verwendeten Beispiele aufgelistet. Wenn Sie wirklich Bedenken hinsichtlich der Instanz von haben, klicken Sie hier ein Verweis auf den Konstruktor, der dieses Objekt erstellt hat.
Rückgabewerttyp: ObjektHier ist zu beachten, dass wir normalerweise Folgendes erstellen, z. B.: var a = 1, var b = '123'. Tatsächlich beziehen sie sich auf ihre entsprechenden Konstruktoren, um ihre entsprechenden Typen zu erstellen, anstatt sie direkt zu erstellen, wie wir auf den ersten Blick sehen. Die Testmethoden für jeden Typ sind wie folgt:
4. toString()-Methode Diese Methode ist die sicherste und genaueste Methode, das Objekt zu erkennen Typ./*5大基本类型*/ var a = 123; console.log(a.constructor == Number); //true var a = '123'; console.log(a.constructor == String); //true var a = true; console.log(a.constructor == Boolean); //true var a = undefined; console.log(a && a.constructor); //undefined var a = null; console.log(a && a.constructor); //null /*复杂类型*/ var a = function(){}; console.log(a.constructor == Function); //true var a = new Date(); console.log(a.constructor == Date); //true var a = new Object(); console.log(a.constructor == Object); //true var a = {}; console.log(a.constructor == Object); //true var a = new Array(); console.log(a.constructor == Array); //true var a = []; console.log(a.constructor == Array); //true var a = new RegExp('abc'); console.log(a.constructor == RegExp); //true var a = /^abc$/; console.log(a.constructor == RegExp); //true
Wenn Sie der Meinung sind, dass die Groß-/Kleinschreibung des zurückgegebenen Strings problematisch ist, können Sie alles in Kleinbuchstaben umwandeln
Der Code lautet wie folgt:/*toString 检测类型函数*/ function toStringType(obj){ return Object.prototype.toString.call(obj).slice(8, -1); } /*5大基本类型*/ var a = 123; console.log(toStringType(a)); //"Number" var a = '123'; console.log(toStringType(a)); //"String" var a = true; console.log(toStringType(a)); //"Boolean" var a = undefined; console.log(toStringType(a)); //"Undefined" var a = null; console.log(toStringType(a)); //"Null" /*复杂类型*/ var a = function(){}; console.log(toStringType(a)); //"Function" var a = new Date(); console.log(toStringType(a)); //"Date" var a = new Object(); console.log(toStringType(a)); //"Object" var a = {}; console.log(toStringType(a)); //"Object" var a = new Array(); console.log(toStringType(a)); //"Array" var a = []; console.log(toStringType(a)); //"Array" var a = new RegExp('abc'); console.log(toStringType(a)); //"RegExp" var a = /^abc$/; console.log(toStringType(a)); //"RegExp"
function toStringType(obj){ return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase(); }
Antwort: Weil jedes Objekt in js seine eigene toString-Methode vordefiniert hat, was dem Umschreiben von toString ähnelt
var a = 123; console.log(a.toString()); //"123"
Antwort: Die Funktion des Aufrufs besteht darin, den Umfang des Artikels als Beispiel zu ändern Scheibe?
Anhand dieses Beispiels werden Sie den Vergleich verstehen, es dient der Intuitivität der Ergebnisse.
var a = 123; console.log(Object.prototype.toString.call(a)); //"[Object Number]"
Verwandte Empfehlungen:
Detaillierte Erläuterung von Beispielen zur Erkennung von PHP-Datentypen
Das obige ist der detaillierte Inhalt vonZusammenfassung der Methoden zur Datentyperkennung in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!