Heim > Web-Frontend > js-Tutorial > Mehrere Möglichkeiten, den Datentyp in js zu bestimmen

Mehrere Möglichkeiten, den Datentyp in js zu bestimmen

高洛峰
Freigeben: 2017-01-14 10:24:42
Original
1400 Leute haben es durchsucht

Es gibt mehrere Methoden zum Bestimmen des Datentyps in js: typeof, Instanzof, Konstruktor, Prototyp, $.type()/jquery.type() Als nächstes werden wir hauptsächlich die Ähnlichkeiten und Unterschiede dieser Methoden vergleichen.

Lassen Sie uns ein paar Beispiele nennen:

var a = "iamstring.";
var b = 222;
var c= [1,2,3];
var d = new Date();
var e = function(){alert(111);};
var f = function(){this.name="22";};  
Nach dem Login kopieren

1. Die gebräuchlichste Beurteilungsmethode: typeof

alert(typeof a)  ------------> string
alert(typeof b)  ------------> number
alert(typeof c)  ------------> object
alert(typeof d)  ------------> object
alert(typeof e)  ------------> function
alert(typeof f)  ------------> function
Nach dem Login kopieren

Die von typeof zurückgegebenen Typen liegen alle in Form von Zeichenfolgen vor. Bitte beachten Sie, dass beispielsweise der Objekttyp

alert(typeof a == "string") -------------> true
alert(typeof a == String) ---------------> false
Nach dem Login kopieren

praktischer ist.

2. Methoden zur Bestimmung bekannter Objekttypen: Instanz von


alert(c instanceof Array) ---------------> true
alert(d instanceof Date)
alert(f instanceof Function) ------------> true
alert(f instanceof function) ------------> false
Nach dem Login kopieren

Hinweis: Auf Instanz von muss der Objekttyp folgen . Und die Großschreibung kann nicht falsch sein. Diese Methode eignet sich für eine bedingte Auswahl oder Verzweigung.

3. Beurteilen Sie anhand des Konstruktors des Objekts: Konstruktor

alert(c.constructor === Array) ----------> true

Alert(d .constructor === Date) -----------> true

alert(e.constructor === Function) -------> true

Hinweis: Der Konstruktor macht einen Fehler, wenn er eine Klasse erbt

z. B.:

Dieses Problem tritt sowohl bei der direkten als auch bei der Instanzmethode auf Die indirekte Vererbung von Objekten wird dies melden:
function A(){};
function B(){};
A.prototype = new B(); //A继承自B
var aObj = new A();
alert(aobj.constructor === B) -----------> true;
alert(aobj.constructor === A) -----------> false;
Nach dem Login kopieren

Um auf das Thema zurückzukommen: Die Lösung des Konstruktorproblems besteht normalerweise darin, den Konstruktor des Objekts manuell auf sich selbst verweisen zu lassen:
alert(aobj instanceof B) ----------------> true;
alert(aobj instanceof B) ----------------> true;
Nach dem Login kopieren

4. Eine gängige, aber umständliche Methode: Prototyp
aobj.constructor = A; //将自己的类赋值给对象的constructor属性
alert(aobj.constructor === A) -----------> true;
alert(aobj.constructor === B) -----------> false; //基类不会报true了;
Nach dem Login kopieren

kann nicht im falschen Fall geschrieben werden, was problematischer ist. aber es ist universeller.
alert(Object.prototype.toString.call(a) === ‘[object String]') -------> true;
alert(Object.prototype.toString.call(b) === ‘[object Number]') -------> true;
alert(Object.prototype.toString.call(c) === ‘[object Array]') -------> true;
alert(Object.prototype.toString.call(d) === ‘[object Date]') -------> true;
alert(Object.prototype.toString.call(e) === ‘[object Function]') -------> true;
alert(Object.prototype.toString.call(f) === ‘[object Function]') -------> true;
Nach dem Login kopieren

5. Die unbesiegbare und allmächtige Methode: jquery.type()

Wenn das Objekt undefiniert oder null ist, geben Sie das entsprechende „undefiniert“ oder „null“ zurück.

Wenn das Objekt eine interne [[Klasse]] hat, die mit der [[Klasse]] des integrierten Objekts eines Browsers identisch ist, geben wir die entsprechende [[Klasse] zurück ]] Name. (Weitere Details zu dieser Technik.)
jQuery.type( undefined ) === "undefined"
jQuery.type() === "undefined"
jQuery.type( window.notDefined ) === "undefined"
jQuery.type( null ) === "null"
Nach dem Login kopieren

Alles andere gibt seinen Typ „Objekt“ zurück.
jQuery.type( true ) === "boolean"
jQuery.type( 3 ) === "number"
jQuery.type( "test" ) === "string"
jQuery.type( function(){} ) === "function"
jQuery.type( [] ) === "array"
jQuery.type( new Date() ) === "date"
jQuery.type( new Error() ) === "error" // as of jQuery 1.9
jQuery.type( /test/ ) === "regexp"
Nach dem Login kopieren

Normalerweise können Sie zur Beurteilung eine Situation verwenden, in der der Objekttyp bekannt ist. Wenn Sie keine andere Wahl haben, verwenden Sie die Methode $.type() .

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels jedem beim Lernen oder Arbeiten helfen kann. Ich hoffe auch, die PHP-Chinese-Website zu unterstützen.

Weitere Artikel zum Thema JS zu verschiedenen Methoden zur Bestimmung des Datentyps finden Sie auf der chinesischen PHP-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