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

Mehrere Möglichkeiten, den Datentyp in js zu bestimmen

高洛峰
高洛峰Original
2017-01-14 10:24:421388Durchsuche

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";};  

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

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

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

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;

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;

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

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;

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"

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"

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!

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