In JS können wir alle Arten von Variablen mit nur einer Variablen definieren, was sehr praktisch ist, uns aber auch Probleme bereitet, wenn wir wissen möchten, um welchen Typ es sich bei dem Rückgabewert einer Funktion handelt oder um welche Eingabeinformationen es sich handelt Bei der Bestimmung des Typs müssen wir die Daten erkennen. Wie erkennen wir also den Datentyp?
Methode zur Datentyperkennung:
typeof: Operator zur Erkennung des Datentyps
instanceof: Wird verwendet Erkennen Sie, ob eine Instanz zu einer bestimmten Klasse
Konstruktor gehört: Die Konstruktorfunktion ist der Instanz von
Object.prototype.toString .call sehr ähnlich (); Die genaueste und am häufigsten verwendete Methode
typeof
typeof: Der Operator zur Erkennung des Datentyps ist typeof + erkannter Inhalt.
Verwenden Sie typeof, um den Datentyp zu erkennen. Das erste, was zurückgegeben wird, ist eine Zeichenfolge, die den entsprechenden Datentyp enthält.
var num = 2; console.log(typeof num); // ->控制台输出字符串numberconsole.log(typeof typeof typeof typeof function () {}); // 输出的结果为字符串String,因为第一次使用typeof检测后结果为一个字符串数据类型的数据,以后每次检测都是String
Einschränkungen von typeof
1. Das Ergebnis von typeof null ist „object“
2. Es kann nicht genau aufgeschlüsselt werden, ob es sich um ein Array, einen regulären Ausdruck oder andere Werte im Objekt handelt, da typeof zur Erkennung des Datentyps verwendet wird Für die linken und rechten Werte im Objekt Datentyp, das endgültige zurückgegebene Ergebnis ist „Objekt“
instanceof
Instanz von: wird verwendet, um zu erkennen, ob eine Instanz zu einer bestimmten Klasse gehört; Verwendungsmethode: Instanz des Klassennamens
Einschränkungen der Instanz von
1. Es kann nicht zur Verarbeitung von durch Literale erstellten Basistypwerten verwendet werden: Bei Basisdatentypen gibt es einen gewissen Unterschied zwischen den durch Literale erstellten Ergebnissen und die von Instanzen erstellten Ergebnisse. Im Allgemeinen ist nur das von der Instanz erstellte Ergebnis der Wert des Standardobjektdatentyps, und es ist auch eine Instanz der Standard-Zahlenklasse Methode ist der grundlegende Datentypwert, keine strikte Instanz, aber aufgrund der Lockerheit der Methode können Sie die auf Number.prototype
console.log(1 instanceof Number);//->控制台输出false console.log(new Number(1) instanceof Number);//-> 控制台输出true
instanceof bereitgestellte Methode verwenden Da es sich um die Prototypenkette der aktuellen Instanz handelt, sind die von uns erkannten Ergebnisse alle wahr
Bei der Prototypenkettenvererbung der Klasse ist das von uns erkannte Endergebnis möglicherweise nicht korrekt
function Fn() { } var ary = new Array; Fn.prototype = ary;//原型继承:让子类的原型等于父类的一个实例 var f =new Fn; // f->Fn.prototype->Array.prototype->Object.prototype console.log(f instanceof Array); //-> true
constructor:构造函数
Konstruktor: Konstruktor Diese Methode ist der Instanz von sehr ähnlich
var obj = []; console.log(obj.constructor === Array ); //->trueconsole.log(obj.constructor === RegExp); //->false//console还可以出来基本的数据类型var num = 1; console.log(num.constructor === Number);//->true// constructor检测和instanceof一同,一般情况下是检测不了的var reg = /^$/; console.log(reg.constructor === RegExp);//-> trueconsole.log(reg.constructor === RegExp);//-> false
Einschränkungen: Wir können umschreiben Es ist sehr wahrscheinlich, dass der Prototyp der Klasse während des Umschreibvorgangs überschrieben wird. Die erkannten Ergebnisse sind für die speziellen Datentypen null und undefiniert, ihre Klassen sind jedoch Null und undefiniert, der Browser jedoch hat diese beiden Klassen geschützt und erlaubt uns nicht, darauf zuzugreifen
function Fn() {} Fn.prototype = new Array;var f =new Fn; console.log(f.constructor);//-> Array
Object.prototype.toString.call()
Diese Methode wird in unserem Projekt am längsten verwendet und ist derzeit die genaueste Methode
Besorgen Sie sich zuerst die toString-Methode für den Objektprototyp, lassen Sie die Methode ausführen und ändern Sie die Methode. Das Schlüsselwort this in
zeigt auf toString
, bevor wir diese Methode verstehen >
: Im wahrsten Sinne des Wortes wird es in einen String konvertiert, aber bestimmte toString-Methoden werden nicht nur in Strings für Number-, String-, Boolean-, Array-, RegExp-, Date- und Function-Prototypen konvertiert, die toString-Methoden sind alle ①Convert the Der aktuelle Datentyp wird in einen String-Typ umgewandelt (ihre Funktion wird nur zum Konvertieren in einen String verwendet); die toString-Methode des Object-Prototyps unterscheidet sich jedoch von diesen. ② Ihre Funktion besteht darin, die detaillierten Informationen der Klasse zurückzugeben, an die die Ausführung erfolgt Der Hauptteil der aktuellen Methode (dieser in der Methode) gehört. toString
//Number.prototype.toString方法是转化为字符串 console.log((1).toString()); //->这里的toString是Number.prototype.toString用法是转成字符串-> '1' console.log((1).__proto__.__proto__.toString());//[object Object] console.log((128).toString(2/8/10));//把数字转化为二进制、八进制、十进制
第一中类型转成字符串
({name:'编程'}).toString(); console.log(obj.toString());//-> toString中的this是Obj,返回的是obj所属类的信息->[Object Object]第一个Object代表当前实例是对象数据类型的(这个是固定死的),第二个Object代表的是obj所属的类是ObjectMath.toString();//->toString中的this是Math,返回的是Math所属类的信息 -> [Object Math]console.log(Object.prototype.toString.call([])); //->[object Array]console.log(Object.prototype.toString.call(/^$/)); //->[object Array]console.log(({}).toString.call(new Date)); //->[object Date]console.log(Object.prototype.toString.call(1)); //->[object Number]console.log(Object.prototype.toString.call('编程')); //->[object String]console.log(Object.prototype.toString.call(null)); //->[object Null]console.log(Object.prototype.toString.call(undefined)); //->[object Undefined]console.log(Object.prototype.toString.call(function () {})); //->[object Function]
Nach dem Vergleich ist die Genauigkeit unserer vierten Methode am höchsten, daher wird sie häufig in unseren Projekten verwendet. Hast du es verstanden!!!Object原型上的
Detaillierte Erläuterung verschiedener Möglichkeiten zur Erkennung von Datentypen in JavaScript-Zusammenfassung
Mehrere Möglichkeiten zur Bestimmung des Datentyps in js
Das obige ist der detaillierte Inhalt vonEine kurze Einführung in vier Methoden zur Datentyperkennung in JS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!