Karrackoo: This oder nicht this?

Beitrag lesen

Hallo zusammen

Ich dachte eigentlich ich hätte OOP mit Javascript begriffen aber irgendwie komm ich nicht zurecht mit dem this operator.
Und zwar wird überll geschirben mal muss wenn man ein objekt erstellt, die Variablen und Methoden mit this kenzeichnen.

function MeinObjekt() {
   this.meinevariable = false;

this.meinemethode = function() {

}

this.meineanderemethode = function() {

}
}

Soweit so gut. Wenn ich jetzt aber in meinemethode die Variable this.meinevariable auf true verändere und innerhalb dieser Methode eine Abfrage habe welche auf true oder false reagiert dann geht das au noch.

function MeinObjekt() {
   this.meinevariable = false;

this.meinemethode = function(x) {
       this.x = x;
       if(this.x == 0) {
           this.meinevariable = true;
       } else {
           alert(this.meinevariable);
       }
   }

this.meineanderemethode = function() {

}
}

this.meinevariable wird entweder auf true gesetzt oder false wird ausgegeben.

Jetzt kommt aber mein Problem. Wenn ich in meineanderemethode this.meinevariable wieder auf false setzen möchte geht das nicht!?

function MeinObjekt() {
   this.meinevariable = false;

this.meinemethode = function(x) {
       this.x = x;
       if(this.x == 0) {
           this.meinevariable = true;
       } else {
           alert(this.meinevariable);
       }
   }

this.meineanderemethode = function() {
       this.meinevariable = false;
   }
}

Irgendwie scheinen die Variablen in meinemethode und meineanderemethode eigenständig zu sein. Wenn ich aber das this weglasse dann geht es.

function MeinObjekt() {
   meinevariable = false;

this.meinemethode = function(x) {
       this.x = x;
       if(this.x == 0) {
           meinevariable = true;
       } else {
           alert(meinevariable);
       }
   }

this.meineanderemethode = function() {
       meinevariable = false;
   }
}

Ist das normal, muss das so sein? Wenn ich ausserhalb meines Objekts auch eine Variable habe die meinevariabel heisst, würde dann diese geändert oder ist sie wirklich nur im Objekt drin gültig?
Und wenn das so korrekt ist, wie steht überall geschrieben, dass man im Objekt die variabelen mit this.meinevariable deklariert?
Ich hoffe jemand kann meine Verwirrung nachvollziehen und ein wenig Licht ins Dunkle bringen.

Grüsse
Karrackoo