Don P: Irren ist menschlich

Beitrag lesen

Hallo,

Also jetzt muss ich doch ein ganzes Stück zurückrudern:

Hatte tatsächlich den .js-Dateinamen im <script src=...>-tag nicht angepasst, und nach einigen Tests irrtümlich angenommen, dass der code window.onload = {...}.init(); funktionieren würde. Tut er aber nicht :-(

Was sicher funktioniert, ist meine ursprünglich gepostete Version

  
window.onload = function () {  
    var wrapper = { .... };  
    wrapper.init();  
};

Und – das könnt ihr mir hoffentlich bestätigen – auch folgende Variante funktioniert:

window.onload = function () { ({...}).init(); };

Ist ja auch logisch, weil onload jetzt eine richtige Funktion ist.

Es kommt auch hier erwartungsgemäß zu einem Fehler, wenn man gleich danach (noch im <head> des Dokuments) z.B. ~~~javascript window.onload();

  
Was m.M.n tatsächlich funktionieren könnte, wäre gemäß Mathias:  

> `window.onload = ({ ... }).init;`{:.language-javascript}  

Aber das klappt nicht (Fehler: DOM-Element hat keine Eigenschaften). Kann mir jemand sagen, warum nicht?  
  
Der von Mathias genannte Code  
  

> `(function () { var obj = {... }; addLoadEvent(obj.init); })();`{:.language-javascript}  
  
sieht auch interessant aus. Ich werde mich aber vorerst mit meinem  
  
`window.onload = function () { ({...}).init(); };`{:.language-javascript}  
  
begnügen, und die addLoadEvent-Chose erst mal außen vor lassen, bis sich eine Notwendigkeit dafür ergibt.  
  
Mancher fragt sich jetzt vielleicht, warum ich überhaupt so viel Aufhebens darum mache. Naja, ich will halt javascript richtig verstehen, und möglichst einfachen und übersichtlichen Code produzieren. Jede Klammer oder Variable, auf die man eigentlich verzichten könnte, ist mir dann auch zuviel. Dabei ist es natürlich auch Geschmacksache, ob ein Salat von Klammern oder gar  "komischer Zeichen" à la Perl wirklich einfacher und übersichtlicher ist, als wenn man die eine oder andere verzichtbare Variable einführt.  
  
Gruß, Don P