donp: Objekt erwartet, in Zeile eines Funktionsaufrufes

Beitrag lesen

hmmm? du meinst als Parameter in einem Event onevent="Func(this)" ansonsten spielt es da erstmal eine untergeordnete Rolle.

Ja, das meine ich. Aber vielleicht kommt es nur daher, dass ich das Browser-DOM anscheinend zu wenig kenne, sonst hätte ich ja merken müssen, dass bei this.form das übergeordnete Element (Formular) gemeint ist.

Innerhalb von reinen JavaScript-Objekten bzw. -Funktionen ist meistens klar, was "this" ist, aber JavaScript macht sogar dort Fehler, nämlich in sog. closures (eingebetten Funktionen).

Inwiefern Fehler?
Wie gesagt es spielt immer der Kontext eine Rolle. Du meinst sowas?

function Obj() {

var closure = function() {
alert(this);
}
closure();
}

new Obj();

  
Genau.  
  

> Hier erfolgt der Aufruf des closure im window Kontext, folgerichtig ist this = window  
  
Eben gerade nicht: Der Aufruf "closure();" erfolgt im Obj-Kontext (innerhalb des Objekts "Obj"), folgerichtig müsste "this" innnerhalb der closure auf Obj verweisen, tut es aber nicht, und das ist genau der Fehler, bzw. schwächer formuliert, eine Inkonsequenz.  
  
Zitat Douglas Crockford (eine JavaScript-Koryphäe):  
"In a simple function call,  this is set to the Global Object (aka window), which is not very useful. The correct behavior should have been to preserve the current value of this, particularly when calling inner functions."  
  
Der Aufruf "closure();" ist ein solcher simple function call, und "this" zeigt in diesem Fall immer auf das sog. globale Objekt, d.h. das window-Objekt im Browser-DOM.  
  
Don P