Maison  >  Article  >  interface Web  >  Méthode JavaScript pour déterminer si une variable est un objet ou un tableau_javascript skills

Méthode JavaScript pour déterminer si une variable est un objet ou un tableau_javascript skills

WBOY
WBOYoriginal
2016-05-16 16:38:271254parcourir

typeof renvoie un objet

Tous les types de données en JavaScript sont des objets au sens strict, mais dans la réalité, nous avons toujours des types. Si vous souhaitez déterminer si une variable est un tableau ou un objet, vous ne pouvez pas utiliser typeof car tout renvoie un objet.

Copier le code Le code est le suivant :

var o = { 'nom':'lee' };
var a = ['reg','bleu'];

document.write( 'o typeof est ' typeof o);
document.write( '
');
document.write( ' un type de est ' type de a);

Exécution :
Copier le code Le code est le suivant :

o typeof est un objet
un type de est un objet

Par conséquent, nous ne pouvons qu'abandonner cette méthode. Il existe deux façons de déterminer s'il s'agit d'un tableau ou d'un objet

Tout d'abord, utilisez l'attribut typeof plus length

Le tableau a un attribut de longueur, pas l'objet, et le type de tableau et d'objet renvoient tous deux un objet, nous pouvons donc juger de cette façon

Copier le code Le code est le suivant :

var o = { 'nom':'lee' };
var a = ['reg','bleu'];

var getDataType = fonction(o){
Si(typeof o == 'objet'){
Si( typeof o.length == 'number' ){
               return 'Array'
         }autre{
                  renvoie 'Objet' ;                                              >
}autre{
          return 'le paramètre n'est pas un type d'objet' ;
>
};

alert( getDataType(o) ); // Objet
alert( getDataType(a) ); // Tableau
alert( getDataType(1) ); // le paramètre n'est pas un type d'objet
alert( getDataType(true) ); // le paramètre n'est pas un type d'objet
alert( getDataType('a') ); // le paramètre n'est pas un type d'objet

Deuxièmement, utilisez instanceof

Utilisez instanceof pour déterminer si une variable est un tableau, tel que :


Copier le code Le code est le suivant :
var o = { 'nom':'lee' };
var a = ['reg','bleu'];

alert( une instance de Array ); // true
alert( ou instanceof Array ); // false

Vous pouvez également déterminer s'il appartient à un objet

Copier le code Le code est le suivant :
var o = { 'nom':'lee' };
var a = ['reg','bleu'];

alert( une instance d'Object ); // true
alert( ou instanceof Object ); // true

Mais les tableaux appartiennent également à des objets, donc les deux éléments ci-dessus sont vrais. Par conséquent, lorsque nous utilisons instanceof pour déterminer si le type de données est un objet ou un tableau, nous devons d'abord déterminer le tableau, et enfin déterminer l'objet
.
Copier le code Le code est le suivant :
var o = { 'nom':'lee' };
var a = ['reg','bleu'];

var getDataType = fonction(o){
Si (o instance de Array) {
         renvoie 'Tableau'
}else if( o instanceof Object ){
         return 'Objet' ;
}autre{
          return 'le paramètre n'est pas un type d'objet' ;
>
};

alert( getDataType(o) ); // Objet
alert( getDataType(a) ); // Tableau
alert( getDataType(1) ); // le paramètre n'est pas un type d'objet
alert( getDataType(true) ); // le paramètre n'est pas un type d'objet
alert( getDataType('a') ); // le paramètre n'est pas un type d'objet


Si vous ne jugez pas Array en premier, par exemple :
Copier le code Le code est le suivant :

var o = { 'nom':'lee' };
var a = ['reg','bleu'];

var getDataType = fonction(o){
Si (o instance d'objet) {
         renvoyer 'Objet'
}else if( ou instanceof Array ){
         return 'Array' ;
}autre{
          return 'le paramètre n'est pas un type d'objet' ;
>
};

alert( getDataType(o) ); // Objet
alert( getDataType(a) ); // Objet
alert( getDataType(1) ); // le paramètre n'est pas un type d'objet
alert( getDataType(true) ); // le paramètre n'est pas un type d'objet
alert( getDataType('a') ); // le paramètre n'est pas un type d'objet

Ensuite, le tableau sera également jugé comme objet.
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