Maison > interface Web > js tutoriel > Comment déterminer si un objet existe en javascript

Comment déterminer si un objet existe en javascript

青灯夜游
Libérer: 2023-01-07 11:47:41
original
2790 Les gens l'ont consulté

Méthode de jugement : 1. Utilisez l'instruction "if(!Obj)" ; 2. Utilisez "if(!window.Obj)" ; 3. Utilisez "if(!this.Obj)" ; typeof Obj=="undéfini""; 5. Utilisez "if(Obj==undéfini)" et ainsi de suite.

Comment déterminer si un objet existe en javascript

L'environnement d'exploitation de ce tutoriel : système Windows 7, JavaScript version 1.8.5, ordinateur Dell G3.

Méthode Javascript pour déterminer si un objet existe

Maintenant, nous devons déterminer si un objet global myObj existe. S'il n'existe pas, déclarez-le. L'algorithme décrit en langage naturel est le suivant :

  if (myObj不存在){
    声明myObj;
  }
Copier après la connexion

Laissez-moi partager avec vous 10 méthodes d'implémentation :

Méthode 1 :

  if (!myObj) {
    var myObj = { };
  }
Copier après la connexion

Méthode 2 :

En plus de la commande var, il y a une autre réécriture , vous pouvez également obtenir le résultat correct :

  if (!window.myObj) {
    myObj = { };
  }
Copier après la connexion

window est l'objet de niveau supérieur de JavaScript, et toutes les variables globales sont ses propriétés. Par conséquent, déterminer si myobj est vide équivaut à déterminer si l'objet window possède l'attribut myobj, de sorte que les erreurs ReferenceError qui se produisent parce que myObj n'est pas défini peuvent être évitées. Cependant, du fait de la standardisation du code, il est préférable d'ajouter var à la deuxième ligne :

  if (!window.myObj) {
    var myObj = { };
  }
Copier après la connexion

ou de l'écrire comme ceci :

  if (!window.myObj) {
    window.myObj = { };
  }
Copier après la connexion

Méthode 3 :

L'inconvénient de la méthode d'écriture ci-dessus est que dans certaines opérations Dans les environnements (tels que V8, Rhino), window peut ne pas être un objet de niveau supérieur. Par conséquent, envisagez de le réécrire comme suit :

  if (!this.myObj) {
    this.myObj = { };
  }
Copier après la connexion

Au niveau des variables globales, le mot-clé this pointe toujours vers la variable de niveau supérieur, afin qu'il puisse être indépendant des différents environnements d'exploitation.

Méthode 4 :

Cependant, la manière d'écrire ci-dessus est moins lisible, et le pointeur de celle-ci est variable et sujet aux erreurs, il est donc réécrit davantage :

  var global = this;
  if (!global.myObj) {
    global.myObj = { };
  }
Copier après la connexion

Utilisez la variable personnalisée global pour représenter le sommet -niveau objet, ce sera clair Beaucoup plus.

Méthode 5 :

Vous pouvez également utiliser l'opérateur typeof pour déterminer si myObj est défini.

  if (typeof myObj == "undefined") {
    var myObj = { };
  }
Copier après la connexion

C'est actuellement la méthode la plus utilisée pour déterminer si un objet JavaScript existe.

Méthode 6 :

Étant donné que la valeur de myObj est directement égale à undefined lorsqu'elle est définie mais non assignée, la méthode d'écriture ci-dessus peut être simplifiée :

  if (myObj == undefined) {
    var myObj = { };
  }
Copier après la connexion

Il y a deux endroits auxquels il faut faire attention ici, d'abord le deuxième ligne Le mot-clé var ne peut pas manquer, sinon une ReferenceError se produira. Deuxièmement, des guillemets simples ou doubles ne peuvent pas être ajoutés à undefined, car le type de données undefined est comparé ici, pas la chaîne "undefined".

Méthode 7 :

La méthode d'écriture ci-dessus est toujours valable dans le cas d'une "comparaison exacte" (===) :

  if (myObj === undefined) {
    var myObj = { };
  }
Copier après la connexion

Méthode 8 :

Selon la conception du langage javascript, undefined == null, Par conséquent, comparer si myObj est égal à null peut également obtenir le résultat correct :

  if (myObj == null) {
    var myObj = { };
  }
Copier après la connexion

Cependant, bien que le résultat exécuté soit correct, sémantiquement parlant, cette méthode de jugement est erronée et doit être évitée. Parce que null fait référence à un objet vide auquel a été attribué une valeur null, c'est-à-dire que cet objet a en fait une valeur, tandis qu'undéfini fait référence à un objet qui n'existe pas ou auquel aucune valeur n'est attribuée. Par conséquent, seul « l'opérateur de comparaison » (==) peut être utilisé ici. Si l'« opérateur de comparaison exact » (===) est utilisé ici, une erreur se produira.

Méthode 9 :

Vous pouvez également utiliser l'opérateur in pour déterminer si myObj est une propriété de l'objet de niveau supérieur :

  if (!('myObj' in window)) {
    window.myObj = { };
  }
Copier après la connexion

Méthode 10 :

Enfin, utilisez la méthode hasOwnProperty pour déterminer si myObj est une propriété de l'objet de niveau supérieur Attributs :

  if (!this.hasOwnProperty('myObj')) {
    this.myObj = { };
  }
Copier après la connexion

Résumé

1 Si vous déterminez uniquement si l'objet existe, il est recommandé d'utiliser la cinquième façon d'écrire.

2. Si en plus de savoir si l'objet existe, vous devez également déterminer si l'objet a une valeur nulle, il est recommandé d'utiliser la première façon d'écrire.

3. Sauf circonstances particulières, toutes les variables doivent être déclarées à l'aide de la commande var.

4. Afin d'être multiplateforme, il est recommandé d'éviter d'utiliser window pour représenter des objets de niveau supérieur.

5. En langage Javascript, null et indéfini se confondent facilement. Dans les cas où les deux peuvent être impliqués, il est recommandé d'utiliser l'opérateur "comparaison exacte" (===).

【Apprentissage recommandé : Tutoriel avancé javascript

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal