ERLEDIGT
NEIN
NEIN
ANTWORTEN
1
1
ZUGRIFFE
437
437
EMPFEHLEN
-
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:
Code javascript:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
<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
Code javascript:1 2 3 4 5
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
-
Moin,
das, was dein unteres Beispiel funktionieren lässt, nennt man Closure.
Das Obere Beispiel ist ja identisch mit folgener Schreibweise:...und dort liegt der Hase im Pfeffer, denn bei einer Eventüberwachung liefert this das den Event auslösende Element.Code :1 2 3 4 5
function OneClass(globalAtt){ this.g=globalAtt; var self=this; document.getElementById("sub").onclick=function(){alert("Da: " +[B] this[/B].g);}; }
Ähnliche Themen
-
Variablen Gültigkeit
Von 5Rad im Forum .NET Application und Service DesignAntworten: 4Letzter Beitrag: 02.04.11, 23:32 -
Gültigkeit von Variablen ......
Von Speedkill im Forum .NET CaféAntworten: 6Letzter Beitrag: 11.07.06, 08:50 -
Gültigkeit von Variablen
Von fr3akone im Forum PHPAntworten: 3Letzter Beitrag: 08.05.05, 06:41 -
Import / Gültigkeit von Klassen
Von Budman im Forum Flash PlattformAntworten: 3Letzter Beitrag: 01.01.05, 16:50 -
Gültigkeit von Klassen
Von buschke im Forum VisualStudio & MFCAntworten: 2Letzter Beitrag: 06.10.04, 20:41





Zitieren
Login





