Felix Riesterer: Die wahreit um this?

Beitrag lesen

Lieber Fred Furunkelstein 2012,

Funktion != Objekt

Eine Funktion ist doch ein Objekt, ein Funktionsobjekt! Aber ein Funktionsobjekt ist etwas anderes als new Object(). Letzteres wirst Du wohl gemeint haben.

Funktion != Methode

Wenn Du eine Lambda-Funktion von einer Methode eines Objektes unterscheiden willst, dann hast Du sicherlich Recht, hier zwischen "Methode eines Objekts" und "ein Funktionsobjekt" zu unterscheiden. Ob das aber in JS als generelle Nomenklatur gilt, weiß ich nicht.

Spiel mal damit rum, das dürfte Dich aufklären:
[...]

alert('Viewport: ' + this.innerHeight + 'px * ' +  this.innerWidth+ 'px');

function zeigeFarbe(objekt) {
          alert(objekt.style.color);
        }

  
Da verstehe ich nicht, was Dein Code-Beispiel zeigen soll. Insbesondere das Thread-Thema "this" wird hier nicht wirklich untersucht.  
  
In Deinem Beispiel wird während des Seitenaufbaus ein alert ausgegeben, der irgendwelche Eigenschaften des window-Objekts ausgibt ("this" im globalen Scope zeigt auf window).  
  
Dann notierst Du eine Funktionsdeklaration, die ein Funktionsobjekt erzeugt, welches den Namen "zeigeFarbe" erhält und dem window-Objekt als gleichnamige Methode zugewiesen wird. Man kann also window.zeigeFarbe(o) nutzen, wobei o eine Referenz auf ein (HTML-Element-)Objekt sein muss, welches eine Eigenschaft "style" haben muss, da sonst ein Fehler auftreten wird. Existiert eine Eigenschaft "style", und ist sie ein Objekt, welches eine Eigenschaft "color" hat, dann kann der Wert von "color" ausgegeben werden, ansonsten sieht man im alert "undefined".  
  
Nochmals: Wie wolltest Du mit Deinem Code-Beispiel Deine beiden Eingangsbehauptungen ("Funktion != Objekt" und "Funktion != Methode") stützen?  
  
Liebe Grüße,  
  
Felix Riesterer.

-- 
ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)