• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

JavaScript OOP Prototype vererbung

pdflocker

Neues Mitglied
Hallo,

ich hab wirklich so viel bezüglich OOP in JS gelesen, aber auch so viele unterschiedliche möglichkeiten. Leider werd ich einfach aus den antworten etc. nicht schlau, was man am besten benutzen sollte.

Ich hab jetzt so angefangen:

Code:
function MainFunc() {
    this.test = "test";
}

in einer anderen Datei hab ich dann versucht eine neue funktion zu machen die das MainFunc als Construktor erbt:

Code:
MainFunc.prototype.status = new function() {
    
    (function statusAbfrage() {
        $("#klick").click(function() {
          console.log(this.test);
        });
    }());

};

So, meine frage wäre nun, ist das richtig bzw. empfehlenswert die function statusAbfrage als selbst initialisierte function zu machen? also mit den () am ende. Und, ich kann nicht auf die "test" variable zugreifen, die ich in der MainFunc deklariert habe. Auch habe ich den trick mit var that = this; benutzt, bekomme aber nur undefinied raus...
 
Werbung:
this ist immer die Referenz auf den aktuellen Kontext. Im click-Event setzt jQuery this auf das angeklickte Element. Variablen, die du mit "var ..." deklariert hast, kannst du von jeder Funktion, die innerhalb der Funktion stehen, in der du die Variable deklariert hast, und natürlich der Funktion, in der sie deklariert wurde aus aufrufen. Schreibst du also in die .status Funktion so:

MainFunc.prototype.status = function() {
var self = this;
...
}

hast du auch im Event-Handler eine refernz auf den Prototype-Kontext.
das new-Keyword vor der Funktion bewirkt allerdings, dass direkt eine neue Instanz des Konstruktors, in diesem Fall der Funktion "status", erzeugt wird. Willst du eine Funktion erzeugen, lass das "new" einfach weg.

Vielleicht hilft dir das noch weiter: Learning Advanced JavaScript
 
this ist immer die Referenz auf den aktuellen Kontext.

this referenziert das aktuelle Objekt, außer es wird innerhalb einer privaten Methode aufgerufen. Dann wäre es eine Referenz auf das window-Objekt und muss zuvor in einer Variablen wie that gespeichert werden. Der Variablen-Scope in vanilla JavaScript OOP ist ein Thema für sich. Ich habe mir dazu ein Cheat-Sheet erstellt.

Empfehlen würde ich zu dem Thema das Tutorial von Peter Kropff.
 
Werbung:
this referenziert das aktuelle Objekt, außer es wird innerhalb einer privaten Methode aufgerufen. Dann wäre es eine Referenz auf das window-Objekt und muss zuvor in einer Variablen wie that gespeichert werden. Der Variablen-Scope in vanilla JavaScript OOP ist ein Thema für sich. Ich habe mir dazu ein Cheat-Sheet erstellt.

Empfehlen würde ich zu dem Thema das Tutorial von Peter Kropff.

Von dem Tutorial kann ich nach 3 Minuten Lesen schon abraten:
PHP:
var blubb = new Array ();
blubb['bla']     = 'Laber';
blubb['schwall'] = 'Sülz';
blubb['kräh']    = 'Jodelbla';
for (bla in blubb)
{
  alert (bla + '-' + blubb[bla]);    
}
 
HEy ich danke euch! Vorallem an omoxen :) Hab das new weggemacht, und diese status function in der MainFunc aufgerufen, jetzt klappt alles :) Weiß zwar nicht ob das alles so richtig ist, aber ich lerns noch ;) Und danke für den link. Kann mir jemand noch sagen ob das gut so ist mit den selbstaufrufbaren funktionen in der status function? Also mit (function bla() {}()); ? Oder sollte man die normale schreibweiese benutzen und diese dann einzeln (oder gesammelt) aufrufen?
 
HEy ich danke euch! Vorallem an omoxen :) Hab das new weggemacht, und diese status function in der MainFunc aufgerufen, jetzt klappt alles :) Weiß zwar nicht ob das alles so richtig ist, aber ich lerns noch ;) Und danke für den link. Kann mir jemand noch sagen ob das gut so ist mit den selbstaufrufbaren funktionen in der status function? Also mit (function bla() {}()); ? Oder sollte man die normale schreibweiese benutzen und diese dann einzeln (oder gesammelt) aufrufen?

dann nutz doch die danke funktion des forums, immer unten rechts eines jeden beitrages ;-)
 
Werbung:
Zurück
Oben