Heim  >  Artikel  >  Web-Frontend  >  Zusammenfassung der Methoden zur Datentyperkennung in JavaScript

Zusammenfassung der Methoden zur Datentyperkennung in JavaScript

韦小宝
韦小宝Original
2018-03-14 18:30:351175Durchsuche

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

1.typeof

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

2.instanceof

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: Objekt

Hier 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

Rückgabewerttyp: String

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"

An diesem Punkt könnten Sie Zweifel haben.

function toStringType(obj){
    return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();
}
1. Warum wird „123“ zurückgegeben, wenn es so geschrieben wird?

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"
2 Warum wird die Aufrufmethode im Artikel verwendet? Was ist die Funktion?

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.

Das Obige ist der gesamte Inhalt dieses Artikels. Wenn Sie nicht viel darüber wissen, können Sie beide Seiten problemlos selbst meistern!

var a = 123;
console.log(Object.prototype.toString.call(a));  //"[Object Number]"

Verwandte Empfehlungen:



Detaillierte Erläuterung von Beispielen zur Erkennung von PHP-Datentypen

JavaScript-Zusammenfassung der Methoden zur Datentyperkennung

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!

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