wahsaga: Referenz auf String

Beitrag lesen

hi,

In diesem Beispiel hier wird zweimal "test1" ausgegeben. Wie kann ich der Funktion eine Referenz übergeben?

Javascript kennt m.W. keine Möglichkeit, dies explizit zu beeinflussen.

Objekte werden immer by reference übergeben, skalare Werte immer by value.

function test1()
{
var stest = new String;
stest = "Test1";
window.alert(stest);
test2(stest);
window.alert(stest);
}

function test2(Bla)
{
Bla = "Juhu";
}

Ich hatte gehofft, das duch "stest = new String" ein Object erstellt wird.

Nun, Klammern solltest du eigentlich schon anhängen, wenn du ein Objekt erzeugen willst:

var stest = new String();

Allerdings überschreibst du dir diese Objektreferenz gleich in der nächsten Zeile wieder:
stest = "Test1";
Damit ist stest jetzt wieder ein skalarer Wert. Ja, Javascript ist an dieser Stelle ein bisschen schizophren - normale Textliterale sind _keine_ Objekte vom Typ String - obwohl sie dessen Methoden unterstützen ...

Wenn du wirklich ein String-Objekt anlegen willst, welches "Test1" beinhaltet, dann könntest du schreiben:

var stest = new String("Test1");

Aber auch dann wird das mit der Übergabe per reference so m.E. nicht funktionieren. Selbst wenn es funktionieren würde - dann würde mit der Zeile
Bla = "Juhu";
wieder das gleiche geschehen, wie gerade schon erwähnt - die Objektreferenz wird wieder durch ein Textliteral, welches _kein_ Objekt ist, überschrieben.

gruß,
wahsaga

--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }