Struppi: seltsamer Methodenaufruf

Beitrag lesen

Soweit nichts neues, aber jetzt:
alert(dict("a")); //gleiche Funktion wie Item()

Huch - Methodenaufruf ohne expliziten Namen?
Wie nennt man denn das in der objektorientierten Welt?

keine Anhnung

Kann man sowas auch in Javascript realisierten - z.B. in der Klasse mydict?

function mydict(){
this.Item = function(key){machwas}
}

nein. da die Funktion mydict() ein Konstruktor ist, den du mit new mydict() aufrufst und dann ein Objekt erhälst.

var obj = new mydict();

Dann geht aber obj() nicht, da obj keine Funktion ist.

du kannst aber mydict eine Funktion zurückgeben lassen, der du dann die entsprechenden Funktion zuweist.

z.b. so:

function myclass ()  
{  
 var self = function(x)  
 {  
     alert(x);  
 }  
 var o = {};  
 self.param = function(k, v)  
 {  
     if(typeof k == 'undefined') return o;  
     if(typeof v == 'undefined') return o[k];  
     o[k] = v;  
     return o[k];  
 }  
 return self;  
  
}  
var x = new myclass();  
var y = new myclass();  
  
x.param('a', 'Der wert von a in x')  
y.param('a', 'Der wert von a in y')  
  
alert( x.param('a')  
+ '\n' +  
y.param('a') ) ;  

Das geht u.U. auch sauberer.

Struppi.

--
Javascript ist toll (Perl auch!)