Hallo,
S.o. mit Semikolon am Ende der handler-Funktion bringt aber auch das neue den Alert korrekt anzeigende Fenster ein "missing } after property list".
Ich finde es gerade schwer deinen Schilderungen zu folgen.
Echt? Das Semikolon nach der hanlder-Funktion ist wirklich eine genaue Beschreibung. Ich bekomme den Fehler vom FF, ich denk mir das ja nicht aus (;-), Zeile 22 (s. meine Pfeilmarkierung unten, deshalb mal kein Code-Highlighting):
<button id="button">button</button>
<script>
function Konstruktor () {}
Konstruktor.prototype = {
eigenschaft : "Eigenschaftswert",
start : function () {
// Funktioniert:
alert("start wurde aufgerufen\n" +
"this.eigenschaft: " + this.eigenschaft);
setTimeout(this.verzögert, 100);
document.getElementById("button").onclick = this.handler;
},
verzögert : function () {
// Fehler: this verweist auf window
alert("verzögert wurde aufgerufen\n" +
"this.eigenschaft: " + this.eigenschaft);
},
handler : function (e) {
// Fehler: this verweist auf das Element, dem der Event-Handler anhängt
alert("handler wurde aufgerufen\n" +
"this.eigenschaft: " + this.eigenschaft);
};
-----^
};
var instanz = new Konstruktor();
instanz.start();
</script>
Der code von Mathias ist absolut korrekt und sollte auch keinen Fehler werfen.
In seinem Beispiel davor steht da ein Komma. Ich denke da sollte vermutlich garnix stehen, oder? Json sieht doch so aus:
obj = {
prop1:"bla",
prop2:function() {},
prop3:"letzer Wert" // kein Komma und vor allem kein Semikolon dahinter?
};
In der Json-Notation haben doch Semikolons am Ende einer Property-Deklaration keinen Platz, oder?
Wenn sie beendet ist schon.
Genau.
Gruß
jobo