Faber: Merkwürdiges Problem mit Sichtbarkeit

Beitrag lesen

Hi zusammen,

ich bin auf ein Problem gestoßen, welches ich nicht verstehe, aber ihr mir sicher schnell erklären könnt. Folgende Situation:

function Klasse1(){  
	klasse2_instanz1	=	new Klasse2("rot");  
	klasse2_instanz2	=	new Klasse2("blau");  
  
	klasse2_instanz1.farbe();  
}  
  
function Klasse2(farbe){  
	zeigeFarbe	=	function(){  
		alert(farbe);  
	}  
	this.farbe	=	function(){  
		zeigeFarbe();  
	}  
}  
  
new Klasse1()

Anstatt 'rot' zu melden, gibt der Code für klasse2_instanz1 'blau' aus. Prinzipiell ist es so, dass immer der Parameter des zuletzt instanzierten Objektes ausgegeben wird.

Wenn das alert(farbe) allerdings in die öffentliche Funktion this.farbe() gepackt wird (ohne umweg über die private zeigeFarbe()), wird die richtige Farbe ausgegeben.

Wieso verdammt ist das so? ;-)

Ich hoffe ihr könnt mir behilflich sein.

Viele Grüße

Faber