molily: Was mache ich falsch?

Beitrag lesen

Hallo,

ne Anfängerfrage: Funktion f bekommt zwei Strings a und b übergeben, die in einem Objekt verwendet werden, das einer weiteren Funktion übergeben wird. Kurz gesagt, ich will in f die Funktion g (so wie sie dasteht) aufrufen. Geht aber nicht. h und i funktionieren hingegen.

Was mache ich falsch?

»Geht nicht« ist keine Fehlerbeschreibung.

function f(a, b) {
    g({a : b});      // geht nicht
    h({'a' : b});    // geht
    i({'a' : 'b'});  // geht auch
}

Ich verstehe nicht ganz, was du beabsichtigst, und ich verstehe nicht, was du hier unter »geht« oder »geht nicht« verstehst.

Nichts davon funktioniert in der Hinsicht, dass ein Objekt übergeben wird, das eine Eigenschaft hat, dessen Namen aus der Variable a stammt und dessen Wert aus der Variable b stammt.

{ a : b } und { 'a' : b } sollten identische Resultate erzeugen: ein Object mit einer Eigenschaft namens a mit einem Wert, der in der Variable b steht. (Variable a spielt dabei keine Rolle!)

Lediglich { 'a' : 'b' } sollte aus der Reihe tanzen: dabei wird weder die Variable a noch die Variable b verwendet. Es wird ein Object erstellt mit einer Eigenschaft namens a mit einem String "b" als Wert.

Was hast du jetzt genau vor? Willst du ein Objekt mit einer Eigenschaft, dessen Name genauso variable wie dessen Wert ist? Dann hilft dir der Object-Literal nicht weiter, das ginge eher so:

var a = "variabler name";  
var b = "variabler wert";  
var obj = {};  
obj[a] = b;  
  
for (var i in obj) {  
   alert("Name: " + i + "\nTyp: " + typeof(obj[i]) + "\nWert: " + obj[i]);  
}

Mathias

--
»No nations, no borders.«
SELFHTML Weblog