Hallo,
Jetzt geht es auch mit this. Was meinst du mit "wie man sieht"? Ich dachte jetzt, "this" bezöge sich immer auf den aufgerufenen Kontext?
der Kontext ist die Variable welche die Funktion aufruft und die steht vor dem .getValue.
ja, durch den Aufruf als Objektmethode:
<script>
[code lang=javascript]
myObj = {
method : function () {
alert(this);
}
};
function testThis() {
alert(this);
}
function callMyObjMethod() {
myObj.method();
}
testThis(); // [object Window]
callMyObjMethod(); // [object Object]
window.setTimeout(testThis,100); // [object Window]
window.setTimeout(callMyObjMethod,100); // [object Object]
window.onload = function () {
document.getElementById("callMyObjMethod").onclick = callMyObjMethod; // [object Object]
document.getElementById("callTestThis").onclick = testThis; // [object HTMLButtonElement]
}
</script>
<body>
<button id="callMyObjMethod">callMyObjMethod()</button>
<button id="callTestThis">callTestThis()</button>
</body>
[/code]
Aber eben hatte ich auch window.setInterval("myBgColorChange()", "120");
und die Fehlerkonsole meint, myBgColorCange sei nicht definiert. Habe es umgeschrieben in window.setInterval(myBgColorChange, "120"); und es ging. Keine Ahnung warum ???
myBgColorCange ist keine globale Funktion.
Aber sie ist im window.onload definiert, genau wie auch setIntervall. Macht es denn einen Unterschied, welche der beiden Schreibweisen ich verwende? Für den Scope (Closure) doch wohl nicht, oder? Zumal es ja auch erst mit der Stringschreibweise ging ...;
Gruß
jobo