Heim > Web-Frontend > js-Tutorial > So ermitteln Sie, ob ein Objekt in Javascript vorhanden ist

So ermitteln Sie, ob ein Objekt in Javascript vorhanden ist

青灯夜游
Freigeben: 2023-01-07 11:47:41
Original
2790 Leute haben es durchsucht

Beurteilungsmethode: 1. Verwenden Sie die Anweisung „if(!Obj)“ 2. Verwenden Sie „if(!window.Obj)“; typeof Obj=="undefiniert"); 5. Verwenden Sie „if(Obj==undefiniert)“ und so weiter.

So ermitteln Sie, ob ein Objekt in Javascript vorhanden ist

Die Betriebsumgebung dieses Tutorials: Windows 7-System, JavaScript-Version 1.8.5, Dell G3-Computer.

Javascript-Methode zur Bestimmung, ob ein Objekt existiert

Jetzt müssen wir feststellen, ob ein globales Objekt myObj existiert. Wenn es nicht existiert, deklarieren Sie es. Der in natürlicher Sprache beschriebene Algorithmus lautet wie folgt:

  if (myObj不存在){
    声明myObj;
  }
Nach dem Login kopieren

Lassen Sie mich 10 Implementierungsmethoden vorstellen:

Methode 1:

  if (!myObj) {
    var myObj = { };
  }
Nach dem Login kopieren

Methode 2:

Zusätzlich zum Befehl var gibt es Durch erneutes Umschreiben können Sie auch das richtige Ergebnis erhalten:

  if (!window.myObj) {
    myObj = { };
  }
Nach dem Login kopieren

window ist das Objekt der obersten Ebene von JavaScript und alle globalen Variablen sind seine Eigenschaften. Daher ist die Bestimmung, ob myobj leer ist, gleichbedeutend mit der Bestimmung, ob das Fensterobjekt über das Attribut myobj verfügt, sodass ReferenceError-Fehler vermieden werden können, die auftreten, weil myObj nicht definiert ist. Aufgrund der Standardisierung des Codes ist es jedoch am besten, var zur zweiten Zeile hinzuzufügen:

  if (!window.myObj) {
    var myObj = { };
  }
Nach dem Login kopieren

oder es so zu schreiben:

  if (!window.myObj) {
    window.myObj = { };
  }
Nach dem Login kopieren

Methode 3:

Der Nachteil der oben genannten Schreibmethode besteht darin, dass in Einige Operationen In Umgebungen (z. B. V8, Rhino) ist das Fenster möglicherweise kein Objekt der obersten Ebene. Erwägen Sie daher, es wie folgt umzuschreiben:

  if (!this.myObj) {
    this.myObj = { };
  }
Nach dem Login kopieren

Auf der Ebene globaler Variablen verweist das Schlüsselwort this immer auf die Variable der obersten Ebene, sodass es von verschiedenen Betriebsumgebungen unabhängig sein kann.

Methode 4:

Die obige Schreibweise ist jedoch weniger lesbar und der Zeiger ist variabel und fehleranfällig. Daher wird er weiter umgeschrieben:

  var global = this;
  if (!global.myObj) {
    global.myObj = { };
  }
Nach dem Login kopieren

Verwenden Sie die benutzerdefinierte Variable global, um die Spitze darzustellen -Level-Objekt, es wird viel mehr klar sein.

Methode 5:

Sie können auch den Operator „typeof“ verwenden, um festzustellen, ob myObj definiert ist.

  if (typeof myObj == "undefined") {
    var myObj = { };
  }
Nach dem Login kopieren

Dies ist derzeit die am weitesten verbreitete Methode, um festzustellen, ob ein JavaScript-Objekt vorhanden ist.

Methode 6:

Da der Wert von myObj direkt undefiniert ist, wenn er definiert, aber nicht zugewiesen ist, kann die obige Schreibmethode vereinfacht werden:

  if (myObj == undefined) {
    var myObj = { };
  }
Nach dem Login kopieren

Hier gibt es zwei Stellen, auf die man achten sollte, erstens die zweite Zeile Das Schlüsselwort var darf nicht fehlen, da sonst ein ReferenceError auftritt. Zweitens können einfache Anführungszeichen oder doppelte Anführungszeichen nicht zu undefiniert hinzugefügt werden, da hier der Datentyp von undefiniert verglichen wird, nicht die Zeichenfolge „undefiniert“.

Methode 7:

Die obige Schreibmethode gilt auch im Fall eines „exakten Vergleichs“ (===):

  if (myObj === undefined) {
    var myObj = { };
  }
Nach dem Login kopieren

Methode 8:

Gemäß dem Sprachdesign von Javascript, undefiniert == nullDaher kann auch der Vergleich, ob myObj gleich null ist, das richtige Ergebnis erhalten:

  if (myObj == null) {
    var myObj = { };
  }
Nach dem Login kopieren

Obwohl das laufende Ergebnis semantisch korrekt ist, ist diese Beurteilungsmethode jedoch falsch und sollte vermieden werden. Denn null bezieht sich auf ein leeres Objekt, dem der Wert null zugewiesen wurde, das heißt, dieses Objekt hat tatsächlich einen Wert, während sich undefiniert auf ein Objekt bezieht, das nicht existiert oder dem kein Wert zugewiesen wurde. Daher kann hier nur der „Vergleichsoperator“ (==) verwendet werden. Wird hier der „exakte Vergleichsoperator“ (===) verwendet, tritt ein Fehler auf.

Methode 9:

Sie können auch den in-Operator verwenden, um zu bestimmen, ob myObj eine Eigenschaft des Objekts der obersten Ebene ist:

  if (!('myObj' in window)) {
    window.myObj = { };
  }
Nach dem Login kopieren

Methode 10:

Schließlich verwenden Sie die Methode hasOwnProperty, um zu bestimmen, ob myObj ist eine Eigenschaft des Objekts der obersten Ebene. Attribute:

  if (!this.hasOwnProperty('myObj')) {
    this.myObj = { };
  }
Nach dem Login kopieren

Zusammenfassung

1 Wenn Sie nur feststellen, ob das Objekt existiert, wird empfohlen, die fünfte Schreibweise zu verwenden.

2. Wenn Sie zusätzlich zur Existenz des Objekts auch feststellen müssen, ob das Objekt einen Nullwert hat, wird empfohlen, die erste Schreibweise zu verwenden.

3. Sofern keine besonderen Umstände vorliegen, sollten alle Variablen mit dem Befehl var deklariert werden.

4. Um plattformübergreifend zu sein, wird empfohlen, die Verwendung von Fenstern zur Darstellung von Objekten der obersten Ebene zu vermeiden.

5. In der Javascript-Sprache werden null und undefiniert leicht verwechselt. In Fällen, in denen beide beteiligt sein können, wird empfohlen, den Operator „exakter Vergleich“ (===) zu verwenden.

【Empfohlenes Lernen: Javascript-Tutorial für Fortgeschrittene

Das obige ist der detaillierte Inhalt vonSo ermitteln Sie, ob ein Objekt in Javascript vorhanden ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage