Maison  >  Article  >  interface Web  >  Résumé des méthodes pour déterminer le type de données en JavaScript

Résumé des méthodes pour déterminer le type de données en JavaScript

高洛峰
高洛峰original
2017-01-14 10:19:191051parcourir

typeof
Typeof est souvent utilisé pour déterminer si une variable globale existe si une page définit une variable globale. Si vous faites le jugement suivant :

//haorooms是全局变量
if(haorooms!=undefined){
}//js会报错,说"Uncaught ReferenceError: haorooms is not defined"

La solution est qu'on écrive comme suit :

if(typeof haorooms!=undefined){
}

Après avoir utilisé typeof, aucune erreur ne sera signalée ! C'est l'une des applications de typeof !

De plus, typeof peut également déterminer le type de données ! Comme suit :

var haorooms="string"; console.log(haorooms); //string
var haorooms=1; console.log(haorooms); //number
var haorooms=false; console.log(haorooms); //boolean
var haorooms; console.log(typeof haorooms); //undfined
 
var haorooms= null; console.log(typeof haorooms); //object
var haorooms = document; console.log(typeof haorooms); //object
var haorooms = []; console.log(haorooms); //object
var haorooms = function(){}; console.log(typeof haorooms) //function  除了可以判断数据类型还可以判断function类型

Évidemment, pour typeof, en plus des quatre premiers types, null, object et array renvoient tous les types d'objet

instanceofVous pouvez l'utiliser pour déterminer s'il s'agit d'un tableau.

var haorooms=[];
console.log(haorooms instanceof Array) //返回true

constructeur

constructor est le constructeur correspondant à l'objet retourné.
Méthodes pour déterminer différents types de données :

console.log([].constructor == Array);
console.log({}.constructor == Object);
console.log("string".constructor == String);
console.log((123).constructor == Number);
console.log(true.constructor == Boolean);
 
function employee(name,job,born){
  this.name=name;
  this.job=job;
  this.born=born; }
 
var haorooms=new employee("Bill Gates","Engineer",1985);
console.log(haorooms.constructor); //输出function employee(name, jobtitle, born){this.name = name; this.jobtitle = job; this.born = born;}

En sortant haorooms.constructor, vous pouvez voir que le constructeur est le constructeur correspondant à l'objet renvoyé.

Object.prototype.toString

Nous avons mentionné plus tôt que nous pouvons utiliser l'attribut constructeur pour déterminer le type d'objet. Parlons à nouveau de la méthode Object.protype.toString

Object.prototype.toString.apply({}) // "[object Object]"
Object.prototype.toString.apply([]) // "[object Array]"
Object.prototype.toString.apply(NaN)// "[object Number]"
Object.prototype.toString.apply(function(){}) // "[object Function]"

En utilisant cette méthode, nous pouvons déterminer correctement le type de base d'une variable, mais s'il s'agit d'un type personnalisé, nous ne pouvons pas connaître le type réel, car le résultat sera toujours [object Object]

Autres

jQuery a également une méthode de jugement de type


$.isWindow(window) // true

Comment faire

core.js#479
isWindow: function( obj ) {
  return obj != null && obj == obj.window;
}

Alors ouvrez un objet comme ceci :

var fakeWindow;
fakeWindow = {};
fakeWindow.window = fakeWindow;
$.isWindow(fakeWindow) // true

et vous l'aurez trompé.

Résumé

Il est vraiment difficile de juger correctement le type en JavaScript. Lorsque vous l'étudiez attentivement, il est très important de concevoir votre jugement en fonction de différentes situations. Nous devons également réfléchir à la manière de déterminer le. tapez correctement de la manière la plus concise. Bien sûr, il existe de nombreux endroits qui ne sont pas présentés dans cet article, comme la méthode isPrototypeOf. JavaScript est un langage avec beaucoup de bagage historique, mais il s'améliore également constamment lors de son utilisation. , veuillez noter qu'il existe trop de méthodes recto-verso, alors n'oubliez pas de les utiliser avec précaution.


Pour plus d'articles connexes résumant les méthodes de détermination des types de données en JavaScript, 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