wahsaga: Objektmethode benötigt Wert vom Objekt, aber wie?

Beitrag lesen

hi,

Ich habe eine Methode in einem Objekt und in dieser Methode brauche ich einen Wert aus dem Objekt. Ich weiß nicht, wie ich aus der Funktion wieder hoch ins Objekt komme, um den Wert von dort rauszufinden.

Normalerweise brauchst du nicht wieder "hoch ins Objekt" kommen - per this.eigenschaftname public deklarierte Eigenschaften stehen dir unter genau diesem Bezeichner wieder zur Verfügung.

Hier liegt der Fall aber aus einem Grund anders:

this.maximize.onclick = function() {

Diese Funktion wird im Kontext des HTML-Elementobjektes, auf welches this.maximize zeigt, aufgerufen - und deshalb verweist this in der Methode auf dieses HTML-Elementobjekt, und nicht auf deine Instanz der Javascript-Klasse.

/* HIER bräuchte ich den Wert aus "position".
       Wie kriege ich den? Ich kann zb. myWindow0.position kriegen, aber ich brauche immer den Wert aus dem aktuellen Objekt.
    */
    var pos = this.position; // Geht nicht
    var pos = constructor.position; // <- Geht natürlich nicht :) Ich habs trotzdem mal probiert

Wenn es gar nicht erforderlich ist, dass die Eigenschaft die Sichtbarkeit public besitzt - dann lege sie mit Sichtbarkeit private an, in dem du sie im Objekt nicht mit this.position deklarierst, sondern mit var position.
(Bzw. da position als Parameter bei der Erzeugung des Objektes mitgegeben wird, sollte dir position sowieso überall zur Verfügung stehen.)

Wenn private aus irgendwelchen Gründen keine Option darstellen sollte, und du public benötigst - dann kannst du dir auch damit behelfen, dass du dem Objekt eine auf es selber verweisende Eigenschaft verpasst:

function xWindow(position) {  
  var self = this;  
  this.position = position;  
  //...

self mit der Sichtbarkeit private steht dir dann auch in der Methode this.maximize.onclick, die wie schon erwähnt im Kontext des HTML-Elementobjektes ausgeführt wird, zur Verfügung - d.h., auf die Eigenschaft, auf die du ausserhalb dieser Methode mit this.position zugreifen kannst, kannst du innerhalb dieser über self.position zugreifen.

gruß,
wahsaga

--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }