Thomas: Probleme mit klassen

function class1(){
this.name = function(newName){
classname = newName;
}
this.output = function(){
alert(classname);
}
}
in1 = new class1();
in1.name('test');
in2 = new class1();
in2.name('test1');
in1.output()

warumm ist hier die ausgabe 'test1' ??
dürfte doch nicht sein muss doch 'test' sein.

  1. hi,

    warumm ist hier die ausgabe 'test1' ??

    Weil classname bei dir nicht an das Objekt gebunden ist, und somit im globalen Scope liegt.

    Also wird classname erst 'test' zugewiesen, dann 'test1' - und dann gibst du den Wert von classname aus.

    Ich finde diese Seite als Einstieg in das OOP-Model von Javascript sehr gut geeignet, http://phrogz.net/JS/Classes/OOPinJS.html

    Und bei der wikipedia findest du unter Javascript auch recht ausführliche Erklärungen dazu.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. ok danke das hat geholfen.
      das nächste problem steht aber schon vor der tür ;-)

      also ich habe ein Event-Handler:

      function start(){
      this.divelement = document.createElement("div");
      this.divelement.onclick = clickEvent;
      this.var1 = 'text';

      function clickEvent(e){
      alert(e);

      //wie kriege ich jetzt hier zugriff auf die var1?

      }

      1. hi,

        also ich habe ein Event-Handler:

        function start(){
        this.divelement = document.createElement("div");
        this.divelement.onclick = clickEvent;
        this.var1 = 'text';

        function clickEvent(e){
        alert(e);

        //wie kriege ich jetzt hier zugriff auf die var1?

        Du könntest bspw. den Wert als Eigenschaft an dem Element ablegen, auf welchem der Event ausgelöst wird:

        In start()
        this.divelement.var1 = 'text';

        • damit hättest du den Wert schon mal an das Div "gebunden".

        Und in clickEvent() hast du jetzt natürlich wieder über this.var1 Zugriff darauf (weil this in diesem Kontext ja auf das Div-Element referenziert).

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Ach ja ist eigentlich logisch :-)

          Danke!