Ergebnis 1 bis 4 von 4
  1. #1
    danomator ist offline Grünschnabel
    registriert
    04-07-2008
    Beiträge
    5

    JS OOP: Objekt direkt im Objekt ansprechen

    Hallo. Ich will mein Verständnis über JS OOP erweitern und habe da eine kleine Frage zu folgendem Beispiel:

    Code:
    var myObj = {
      var1 : 'testvar1',
     
      subObj : {
        var2 : 'testvar2',
    
        func : function()
        {
          alert(myObj.var1+', '+this.var2);
        }
      }
    };
    
    myObj.subObj.func();
    Wie kann ich in der Funktion func() auf myObj.var1 zugreifen ohne den Objektnamen zu verwenden? Mit this kann ich in einem Objekt direkt auf alle Elemente zugreifen die sich in der selben Ebene befinden. Gibt es auch so eine Eigenschaft, die mich quasi zum übergeordneten Objekt befördert?

  2. #2
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: JS OOP: Objekt direkt im Objekt ansprechen

    Aus Sicht von OOP hast du hier kein Objekt. es ist lediglich ein Datenbobjekt oder eine hashtable. Wenn du wirklich ein Objekt benutzen möchtest (und hier das sieht so aus wie ein singleton Objekt), dann baue es so:
    PHP-Code:
    var myObj = new function() {....
    }; 
    Dann kannst du auch this verwenden.

  3. #3
    danomator ist offline Grünschnabel
    registriert
    04-07-2008
    Beiträge
    5

    AW: JS OOP: Objekt direkt im Objekt ansprechen

    Danke für die Antwort, aber das ist mir eigentlich bewusst. Ich benutze aber die oben genannte Variante weil ich im eigentlichen Sinne eine Bibliothek habe. Diese Bibliothek hat verschiedene Unter-Objekte, welche verschiedene Arten von Methoden beinhalten. Diese sind unter Umständer noch tiefer kategorisiert. Mir geht es nur darum wie ich aus diesem Objekthaufen aus einem sehr tiefen Objekt auf Werte der Elternobjekte zugreifen kann, ohne dazu den Objektnamen des eigentlichen Objektes ansprechen zu müssen.

    Hier mal eine kleine Struktur:

    Code:
    var lib = {
      events : {  // Event-spezifische Methoden
        add : function(){ ... },
        remove : function(){ ... }
      },
    
      client : { // Client-spezifische Methoden
        browser : function() { ... }
      },
    
      values : { // Mathematische Methoden
        max : function() { ... },
        min : function () { ... },
        sum : function () { ... }
      }
    }
    Mir ist klar dass ich es auch so schreiben könnte:

    Code:
    var lib = function() {
      this.events = {  // Event-spezifische Methoden
        add : function(){ ... },
        remove : function(){ ... }
      };
    
      this.client = { // Client-spezifische Methoden
        browser : function() { ... }
      };
    
      this.values = { // Mathematische Methoden
        max : function() { ... },
        min : function() { ... },
        sum : function() { ... }
      };
    };
    
    var myLib = new lib();
    Für mich ist das Ergebnis allerdings das selbe. Ich befinde mich jetzt zB gerade in der Funktion events.add() und will hier zB die Funktion values.max() aufrufen; dabei aber nicht immer mit lib. anfangen. this funktioniert in meinem Fall nur wenn sich die Methode auf der selben Ebene befindet auf der ich mich gerade bewege. zB könnte ich bei diesem Beispiel über this nur auf remove() zugreifen.

    Meine Frage ist jetzt nur ob es vllt sowas wie this.this gibt, womit ich quasi aus einem Objekt rausspringen kann um direkt auf das nächste zuzugreifen. Was ich vorhabe hat Ähnlichkeit mit den DOM Methoden (zB el.parentNode.nextSibling.firstChild).
    Geändert von danomator (08-07-2008 um 13:08 Uhr)

  4. #4
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: JS OOP: Objekt direkt im Objekt ansprechen

    Ich schrieb new function(), oben sah es noch so aus, als ob du ein singleton willst, jetzt zeigst du mir einen Konstruktor. entweder oder.

    Aber new function hat darüber hinaus den Vorteil, dass du dort Code ausführen kannst und private Variabeln deklarieren, dein Konstrukt ist dafür ungeignet. Das brauchst du aber um dein vorhaben umzusetzen.

Ähnliche Themen

  1. Einführung OOP in Javascript (und Actionscript)
    Von Albu im Forum JavaScript-FAQ
    Antworten: 15
    Letzter Beitrag: 05-01-2004, 23:05

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •