Heim > Web-Frontend > js-Tutorial > Hauptteil

Eine kurze Einführung in vier Methoden zur Datentyperkennung in JS

php是最好的语言
Freigeben: 2018-08-06 17:09:06
Original
1534 Leute haben es durchsucht

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
Nach dem Login kopieren

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
Nach dem Login kopieren
  1. instanceof bereitgestellte Methode verwenden Da es sich um die Prototypenkette der aktuellen Instanz handelt, sind die von uns erkannten Ergebnisse alle wahr

  2. 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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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));//把数字转化为二进制、八进制、十进制
Nach dem Login kopieren

第一中类型转成字符串

 ({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 Login kopieren

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原型上的

Verwandte Empfehlungen:


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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage