Gunnar Bittersmann: Variablen aus Text erzeuegen

Beitrag lesen

@@roger:

nuqneH

myBits = {

this.bin32Bit = function(value)
  {
    …
  };
};


> Das verstehe ich nicht. Wie soll in der Funktion x.[arguments[i]] aussehen ??  
  
Ähm: <http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines@title=Schema 4>.  
  
Was soll der `.`{:.language-javascript}-Operator da?  
  
Entweder sprichst du eine Objekteigenschaft per `Objekt.Eigenschaft`{:.language-javascript} an oder per `Objekt["Eigenschaft"]`{:.language-javascript}. Wenn "Eigenschaft" nicht fest ist, sondern in einer Variablen `String`{:.language-javascript}, bleibt nur die zweite Variante:  
~~~javascript
var String = "Eigenschaft";  
Objekt[String] = …;

Geben wir den Dingern mal gleich sprechende Namen: myBits → flags, bin32Bit → refresh.

Dann sieht das so aus:

flags = {  
  var thisObj = this;  
  
  refresh = function(value)  
  {  
    for  (var i = 1; i < arguments.length; i++,)  
      thisObj[arguments[i]] =;  
  };  
};  
  
flags.refresh(42, "foo", "bar", null, "baz");  

thisObj ist nötig, weil sich this innerhalb von refresh nicht auf das flags-Objekt beziehen würde, sondern auf das refresh-Funktionsobjekt.

Falls du mehrere Instanzen dieses Objekts brauchen solltest, sieht das dann so in etwa aus:

function Flags()  
{  
  var thisObj = this;  
  
  refresh = function(value)  
  {  
    for  (var i = 1; i < arguments.length; i++,)  
      thisObj[arguments[i]] =;  
  };  
};  
  
flags1 = new Flags();  
flags1.refresh(42, "foo", "bar", null, "baz");  
  
flags2 = new Flags();  
flags2.refresh(43, "foo", "bar", null, "baz");

Qapla'

--
Volumen einer Pizza mit Radius z und Dicke a: pi z z a