Hallo Zusammen,
ich versuche mir gerade ein wenig an einem kleinen Javascript Programm und habe an einer Stelle ein kleines Problem. Ich habe das ganze mal auf ein kleines Beispiel zusammen gedampft:
Was haben wir da? Ich hab eine Klasse, die eine Variable hat und eine Methode definiert. Jetzt kann ich nach der Erzeugung die Methode Problemlos korrekt aufrufen (im HTML Teil unten). wenn ich das ganze aber innerhalb des Konstruktors als Event definiere, wird die Methode zwar korrekt aufgerufen aber er hat scheinbar keinen Zugriff auf die Klassenvariable (weder mit dem Konstrukt mit "self" noch über eine Event-Zuweisung mit this.aaaa .
Frage: Warum Weshalb und wie gehts
Ich nehme an die self / this Referenz kommt bei EventZuweisungen mit ihrem Gültigkeitsbereich nicht klar. Wenn das noch jemand etwas fachlich fundierter begründen kann, damit ich auch weiss warum ich es so mache, kann ich hier abschließen .
Grüße
Dom
ich versuche mir gerade ein wenig an einem kleinen Javascript Programm und habe an einer Stelle ein kleines Problem. Ich habe das ganze mal auf ein kleines Beispiel zusammen gedampft:
Javascript:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script type="text/javascript">
function OneClass(globalAtt){
this.g=globalAtt;
var self=this;
document.getElementById("sub").onclick=self.aaaa;
}
OneClass.prototype.aaaa=function(){
alert("Da: " + this.g);
}
</script>
</head>
<body>
Get SOme
<input type="submit" id="sub">
<script type="text/javascript">
cls=new OneClass("GGGGG");
cls.aaaa();
</script>
</body>
</html>
Was haben wir da? Ich hab eine Klasse, die eine Variable hat und eine Methode definiert. Jetzt kann ich nach der Erzeugung die Methode Problemlos korrekt aufrufen (im HTML Teil unten). wenn ich das ganze aber innerhalb des Konstruktors als Event definiere, wird die Methode zwar korrekt aufgerufen aber er hat scheinbar keinen Zugriff auf die Klassenvariable (weder mit dem Konstrukt mit "self" noch über eine Event-Zuweisung mit this.aaaa .
Frage: Warum Weshalb und wie gehts
Javascript:
function OneClass(globalAtt){
this.g=globalAtt;
var self=this;
document.getElementById("sub").onclick=function(){self.aaaa();};
}
Ich nehme an die self / this Referenz kommt bei EventZuweisungen mit ihrem Gültigkeitsbereich nicht klar. Wenn das noch jemand etwas fachlich fundierter begründen kann, damit ich auch weiss warum ich es so mache, kann ich hier abschließen .
Grüße
Dom
Zuletzt bearbeitet von einem Moderator: