molily: window[] statt eval in Namensräumen?

Beitrag lesen

Hallo,

var meinSkript = (function() {
  this.Funktionsname = function() {
     // Mach was
   }

this["Funktionsname"] ("DiesUndDas");
}) ();

  
Jetzt wirfst du vermutlich einiges durcheinander. Du musst dir bloß den Unterschied zwischen globalen und lokalen Variablen in Erinnerung rufen:  
  
bla = ...; erzeugt in einer Funktion eine globale Variable, d.h. ein Unterobjekt von window,  
var bla = ...; eine lokale Variable.  
  
Das gilt immer, egal, was auf der rechten Seite der Zuweisung steht. Da kannst du natürlich auch eine Function Expression, also function (...) {...}  notieren. Du könntest deshalb genauso  
bla = function () {};  
schreiben.  
  
this ist nichts anders als window, solange die Funktion nicht in einem bestimmten anderen Kontext ausgeführt wird. Wenn du immer window willst, solltest du auch window schreiben.  
  
window.bla = function () {}; erzeugt immer eine globale Funktion und du kannst eben über window["bla"] darauf zugreifen.  
  
Mathias

-- 
[SELFHTML aktuell Weblog](http://aktuell.de.selfhtml.org/weblog/)