Schildi: Javascript - OOP

HAllo,

Habe folgendes Problem:

Ich habe auf meiner seite X Objekte mit new MeinObjekt erzeugt.

Gibt es danach so etwas wie eine Liste die ich ansprechen kann, wo alle Objektnamen oder Objekte gespeichert werden?

Sowas zB.:

MeinObjekt[0]
MeinObjekt[1]
etc.

Dies funktioniert leider nicht.

Aber gibts sowas ind er Art oder muss ich selber eine Liste mit allen Objektnamen anlegen?

  1. function MeinObjekt(p1, p2)
    {
    this.platz=p1;
    this.halter=p2;
    }

    //irgenwo weiter unten
    mobj=new Array;
    for(i=0;i<5;i++)
    {
    mobj[i]=new MeinObjekt(i, i+1);
    }

    Dann kann man per
    soundso=mobj[x].platz;
    auf die eigenschaften des x-ten Objekts zugreifen.
    Habe ich das Problem erkannt/gebannt?

    1. Ich denke schon.

      Also Du hast hier eben eine Liste die alle Objekte enthält selber generiert.

      Javascript generiert eine solche liste also nicht automatisch richtig?

      1. Ich weiß nicht genau. Im IE bestimmt,
        wenn man alle Objekte gleich nennt.

        Ich glaube, ich muß noch ein wenig Text dazuschreiben,
        sonst kommt wieder der Fehler: Unsauberes Posting...

        1. Ich weiß nicht genau. Im IE bestimmt,
          wenn man alle Objekte gleich nennt.

          Ich glaube, ich muß noch ein wenig Text dazuschreiben,
          sonst kommt wieder der Fehler: Unsauberes Posting...

          Ich habs halt prinzipiell so wie du (bissle anders) gemacht:

          /*erzeuge Objektnamenliste:*/ var HM = new Array();
          var O_Aktuelles_0 = new menuLink('Aktuelles','Aktuelles','#D6DBD6','#3D3D3D','Verdana, Arial, Helvetica, sans-serif','10px','bold');
          HM.push(O_Aktuelles_0);

          var O_Aktuelles_1 = new menuLink('Aktuelles','Aktuelles','#009900','#FFFFFF','Verdana, Arial, Helvetica, sans-serif','10px','bold');
          HM.push(O_Aktuelles_1);

          etc.

          1. Ich weiß nicht genau. Im IE bestimmt,
            wenn man alle Objekte gleich nennt.

            Ich glaube, ich muß noch ein wenig Text dazuschreiben,
            sonst kommt wieder der Fehler: Unsauberes Posting...

            Ich habs halt prinzipiell so wie du (bissle anders) gemacht:

            /*erzeuge Objektnamenliste:*/ var HM = new Array();
            var O_Aktuelles_0 = new menuLink('Aktuelles','Aktuelles','#D6DBD6','#3D3D3D','Verdana, Arial, Helvetica, sans-serif','10px','bold');
            HM.push(O_Aktuelles_0);

            var O_Aktuelles_1 = new menuLink('Aktuelles','Aktuelles','#009900','#FFFFFF','Verdana, Arial, Helvetica, sans-serif','10px','bold');
            HM.push(O_Aktuelles_1);

            etc.

            Shit - Funzt So Nicht.

            1. Was sagt er denn?
              Also, wenn du alert(HM[0].O_Aktuelles_0.soundso);
              schreibst?
              soundso bezeichnet natürlich das in function menuLink()
              bezeichnete Unterobjekt.
              Ich dachte eingentlich daran, statt O_Aktuelles_0 und
              O_Aktuelles_1 alles in den Array zu legen, so hast du nämlich im Array immer unterschiedliche Namen drin.

              1. Was sagt er denn?
                Also, wenn du alert(HM[0].O_Aktuelles_0.soundso);
                schreibst?
                soundso bezeichnet natürlich das in function menuLink()
                bezeichnete Unterobjekt.
                Ich dachte eingentlich daran, statt O_Aktuelles_0 und
                O_Aktuelles_1 alles in den Array zu legen, so hast du nämlich im Array immer unterschiedliche Namen drin.

                _____________________________________________________________

                var SM_1 = new Array();

                O_cAktuelles = new subMenu('Untermenü - Aktuelles','cAktuelles','hidden');SM_1.push(O_cAktuelles); O_cKontakt = new subMenu('Untermenü - Kontakt','cKontakt','hidden');SM_1.push(O_cKontakt);

                alert(SM_1.O_cAktuelles.actID); //sagt: ist Null oder kein Objekt
                alert(SM_1.O_cAktuelles[1]);  //sagt: ist Null oder kein Objekt
                _____________________________________________________________

                actID ist eine Eigenschaft von dem Objekt O_cAktuelles welches durch Submenu() erzeugt wurde.
                Keine Ahnung wie ich das machen soll ;(

                1. Also das mit dem Array ist ein bisschen anders:
                  Der ist eigentlich kein richtiges Objekt, dh.
                  SM_1.O_cAktuelles.actID
                  kann nicht funktionieren.
                  Probiers mal mit alert(SM_1[0].actID);
                  Das müßte dann die Act ID des zuerst erzeugten Objekts
                  sein.

                  1. DU HATTEST RECHT !

                    Vielen Dank für Deine gute Hilfe !!!

          2. Ich habs halt prinzipiell so wie du (bissle anders) gemacht:

            /*erzeuge Objektnamenliste:*/ var HM = new Array();
            var O_Aktuelles_0 = new menuLink('Aktuelles','Aktuelles','#D6DBD6','#3D3D3D','Verdana, Arial, Helvetica, sans-serif','10px','bold');
            HM.push(O_Aktuelles_0);

            var O_Aktuelles_1 = new menuLink('Aktuelles','Aktuelles','#009900','#FFFFFF','Verdana, Arial, Helvetica, sans-serif','10px','bold');
            HM.push(O_Aktuelles_1);

            Das ist kaputter Code. Variabelnamen dürfen nicht mit einer Zahl anfangen.
            Und warum willst du es unbedingt pushen?
            /*erzeuge Objektnamenliste:*/
            var HM = new Array();
            var HM[HM.length] = new menuLink('Aktuelles','Aktuelles','#D6DBD6','#3D3D3D','Verdana, Arial, Helvetica, sans-serif','10px','bold');

            Struppi.

  2. Hi Schildi,

    Du musst Dich mit dem DOM auseinandersetzen, was nicht so ganz einfach ist, weil es unter den obersten Objekten window und document zwei verschiedene Modelle gibt, Seitenelemente anzusprechen.

    Vielleicht liest Du mal zur Einführung ein bisschen in

    http://selfhtml.teamone.de/javascript/objekte/hinweise.htm

    herum. Weiteres Material gibt's in Feature-Artikeln und in den Tipps und Tricks einen Artikel zur Objekthierarchie von Sven Rautenberg, der sich allerdings speziell auf Fenster bezieht.

    Viele Grüße
    Mathias Bigge

    1. Hi Schildi,

      Du musst Dich mit dem DOM auseinandersetzen, was nicht so ganz einfach ist, weil es unter den obersten Objekten window und document zwei verschiedene Modelle gibt, Seitenelemente anzusprechen.

      Vielleicht liest Du mal zur Einführung ein bisschen in

      http://selfhtml.teamone.de/javascript/objekte/hinweise.htm

      herum. Weiteres Material gibt's in Feature-Artikeln und in den Tipps und Tricks einen Artikel zur Objekthierarchie von Sven Rautenberg, der sich allerdings speziell auf Fenster bezieht.

      Viele Grüße
      Mathias Bigge

      Danke, aber
      --> Es geht ja nicht um vordefinierte JSObjekte, sondern um meine selbst Erzeugten.

      1. Hi schildi,

        Danke, aber
        --> Es geht ja nicht um vordefinierte JSObjekte, sondern um meine selbst Erzeugten.

        Aber Du siehst doch an dem Beispiel von AB, wie Du über die vordefinierten auf eigene zugreifen kannst.

        Viele Grüße
        Mathias Bigge