Maison  >  Article  >  interface Web  >  Plusieurs façons de déterminer le type de données en js

Plusieurs façons de déterminer le type de données en js

高洛峰
高洛峰original
2017-01-14 10:24:421388parcourir

Il existe plusieurs méthodes pour déterminer le type de données en js : typeof, instanceof, constructor, prototype, $.type()/jquery.type(). Ensuite, nous comparerons principalement les similitudes et les différences de ces méthodes.

Donnons quelques exemples :

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. La méthode de jugement la plus courante : 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

Les types renvoyés par typeof sont tous sous forme de chaînes. Veuillez noter que, par exemple :

alert(typeof a == "string") -------------> true
alert(typeof a == String) ---------------> false
le type d'objet est plus pratique.

2. Méthodes pour déterminer les types d'objets connus : instanceof


alert(c instanceof Array) ---------------> true
alert(d instanceof Date)
alert(f instanceof Function) ------------> true
alert(f instanceof function) ------------> false
Remarque : instanceof doit être suivi du type d'objet . Et la capitalisation ne peut pas être erronée. Cette méthode convient à certaines sélections ou branchements conditionnels.

3. Jugez en fonction du constructeur de l'objet : constructor

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

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

Remarque : le constructeur fera une erreur lors de l'héritage d'une classe

par exemple :



Ce problème ne se produira pas avec la méthode instanceof à la fois directe et. l'héritage indirect des objets le signalera vrai :

function A(){};
function B(){};
A.prototype = new B(); //A继承自B
var aObj = new A();
alert(aobj.constructor === B) -----------> true;
alert(aobj.constructor === A) -----------> false;

Pour en revenir au sujet, résoudre le problème du constructeur consiste généralement à laisser le constructeur de l'objet pointer vers lui-même manuellement :

alert(aobj instanceof B) ----------------> true;
alert(aobj instanceof B) ----------------> true;

4. Une méthode courante mais lourde : le prototype

aobj.constructor = A; //将自己的类赋值给对象的constructor属性
alert(aobj.constructor === A) -----------> true;
alert(aobj.constructor === B) -----------> false; //基类不会报true了;

Vous ne pouvez pas écrire une mauvaise casse, ce qui est plus gênant , mais c'est plus universel.

5. La méthode invincible et omnipotente : jquery.type()

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;
Si l'objet est indéfini ou nul, renvoie le "non défini" ou "null" correspondant.

Si l'objet a une [[Classe]] interne qui est la même que la [[Classe]] de l'objet intégré d'un navigateur, nous renvoyons la [[Classe] correspondante ]] nom. (Plus de détails sur cette technique.)

jQuery.type( undefined ) === "undefined"
jQuery.type() === "undefined"
jQuery.type( window.notDefined ) === "undefined"
jQuery.type( null ) === "null"

Tout le reste renverra son type "objet".

Habituellement, vous pouvez utiliser typeof pour juger. Si vous rencontrez une situation où le type d'objet est connu, vous pouvez utiliser la méthode instanceof ou constructeur. Si vous n'avez pas le choix, utilisez la méthode $.type(). .

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"
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article pourra apporter de l'aide à l'étude ou au travail de chacun. J'espère également soutenir le site Web PHP chinois !

Pour plus d'articles sur js sur plusieurs méthodes de détermination du type de données, veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn