Christoph Zurnieden: Array

Beitrag lesen

Hi,

Dein Code ist keine Umsetzung von wahsagas Idee.

Darauf bezog er sich auch nicht, sondern darauf, dass ich die Möglichkeit, über window.[Eigenschaft-/Objektname] zuzugreifen, schon beiläufig erwähnt hatte - das wollte er noch mal ein bisschen ausführlicher darstellen, da er wohl der Meinung ist, es helfe/hülfe(?)(hilfe!)

(Ich glaube 'helfe', sicher bin ich mir da aber auch nicht ;-)

dem Frager am ehesten weiter.

Noch nicht einmal das, ich wollte nur -- ganz unschuldig! -- die von Dir nur angerissene Alternative etwas weiter ausführen. Insbesondere bei Funktionen kann man das hin und wieder gut gebrauchen, es spart Code und ist übersichtlicher (klar, ist etwas Geschmacksache mit drin). Mal ein Beispiel aus meiner Praxis (Namen von der Redaktion zum Schutz der Schuldigen geändert ;-).

Es gibt eine Auswahliste:

  
<select name="selOperator" id="selOperator" size="1">  
<option value="add" selected="selected">Addieren</option>  
<option value="sub" >Subtrahieren</option>  
<option value="mul" >Multiplizieren</option>  
<option value="div" >Dividieren</option>  
<option value="mod" >Modulo</option>  

Diese Auswahlliste wird per Javascript verarbeitet. Die jeweiligen Funktionen sind dabei namensgleich zu den Werten der einzelnen Optionen. Daher bietet sich folgendes an:

  
function add(foo,bar){  
  return foo + bar;  
}  
//[...]  
function mod(foo,bar){  
  return foo % bar;  
}  
  
function processOptions(){  
  //[...]  
  var optionsNode     = document.testformular.selOperator;  
  var choosenOption   = optionsNode.options.selectedIndex;  
  var choosenOperator = optionsNode.options[choosenOption].value;  
  //[...]  
  var result = window[choosenOperator](bla,blub);  
  //[...]  
}  

Das meiste[1] andere (ein switch(), if/else etc) wäre eine völlig unnötige Vermehrung der Codekomplexität inklusive der damit verbundenen Erhöhung der Fehleranfälligkeit.

so short

Christoph Zurnieden

[1] ich kenne allerdings keine geschicktere Lösung