Ashura: this überflüssig?

Beitrag lesen

Hallo molily.

Nein, this bezieht sich auf das Objekt, an dem das Funktionsobjekt hängt, also dessen Methode die Funktion ist.

(Deshalb mein Beispiel: Ein Event-Handler ist beim traditionellen Event-Handling ein Funktionsobjekt, das an einem Elementknotenobjekt hängt, daher verweist this auf eben dieses Elementknotenobjekt.)

Soweit klar.
Doch in Funktionen bezieht sich this doch zwangsläufig auf das window-Objekt:

function foo() {

alert(this);
// Ausgabe: [object Window]

}

Ja. Das oberste Objekt in JavaScript ist aber window. Wenn man function bla () {} im globalen Kontext notiert, ist bla eine Methode des window-Objektes.

Ebenso wie Variablen, wie ich hier gestern zum ersten Mal laß.
(Dass also var foo = "Bar" im globalen Kontext das Selbe ist, wie window["foo"] = "Bar", wusste ich noch nicht.)

Man kann natürlich auch document.bla = function () {}; notieren, dann ist this === document in dieser Funktion. Das ist aber eher unüblich.

Also müsste bei folgendem [object: Document] ausgegeben werden?

document.bar = function () {  
  
    alert(this);  
  
}

Ah, Korrektur: im FF wird [object: HTMLDocument] ausgegeben.
Opera versteht dies offenbar nicht. Er scheint mein Funktionsobjekt als Variable ansehen zu wollen:

Event thread: click
Error:
name: ReferenceError
message: Statement on line 1:
Reference to undefined variable:
bar

Merkwürdig. Oder liegt bei mir ein Denkfehler vor?

Einen schönen Freitag noch.

Gruß, Ashura

--
Selfcode: sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:) fl:( ss:) ls:[ js:|
30 Days to becoming an Opera8 Lover -- Firefox tools for Opera built-ins
Meine Browser: Opera 8.02 | Firefox 1.0.6 | Lynx 2.8.5 | Netscape 4.7 | IE 6.0
MathML fetzt