[JavaScript] Proměnné předané referencí ["vyreseno"]
Zdravim,
je mozne v JS predavat parametry funkci referenci? Aneb jak upravit neco jako:
Kód:
function myfunc(str) {
str = "Wheee!";
}
s = 'blah';
myfunc(s);
alert(s);
aby to rvalo "Wheee!" namisto "blah"?
Treba v PHP by kod vypadal takhle:
PHP kód:
function myfunc(&$str) {
$str = "Wheee!";
}
$s = 'blah';
myfunc($s);
echo $s;
Co jsem se docetl, dela si to JS po svem a do otazky "predat referenci" si nenecha kecat, ale budu rad, kdyz me nekdo vyvede z omylu.
Re: [JavaScript] Proměnné předané referencí
Primitivni datove typy jsou vzdy predavany jako hodnota.
Pokud bys chtel referenci, mas moznost pouzit objekty, ktere javascript predavan jako referenci...
takze ve tve situaci by to asi mohlo fungovat takto:
Kód:
function refobj() {
this.value = "";
}
function myfunc(obj) {
obj.value = "Whee!";
}
var myobj = new refobj();
myobj.value = "blah";
myfunc(myobj);
alert(myobj.value);
ale nezkousel jsem :D
Re: [JavaScript] Proměnné předané referencí
Citace:
Původně odeslal
Anduril
Primitivni datove typy jsou vzdy predavany jako hodnota.
Pokud bys chtel referenci, mas moznost pouzit objekty, ktere javascript predavan jako referenci...
Jo, takze predat string referenci v JS nejde. No to je super. >:{
Kazdopadne diky moc, aspon se uz nebudu pokouset o nemozne :-(
Ten priklad funguje, ale je to teda fakt uzasny
Re: [JavaScript] Proměnné předané referencí
Je to tak..
Ten priklad je sice krkolomny, ale jako pouzitelne to celkem vypada..nicmene samozrejme zalezi na tvem konkretnim programu.
Re: [JavaScript] Proměnné předané referencí
Citace:
Původně odeslal
ripper
Jo, takze predat string referenci v JS nejde. No to je super. >:{
Kazdopadne diky moc, aspon se uz nebudu pokouset o nemozne :-(
Ten priklad funguje, ale je to teda fakt uzasny
Neni treba se tak certit. String je primitivni datovy typ, tj. je predavany jako parametr. To plati ve spouste jazyku. Pokud ho chces predat jako referenci, musis na to vyuzit vlastnosti, ktere dany jazyk nabizi, neni na to obecny postup.
v PHP to jde pomerne snadno (syntaxe podobna Pascalu), Simula ma zase predavani jmenem. Javascript to resi zabalenim do objektu, Java to resi pomoci obecneho Object a pretypovani na String.
Je to proste o tom, jaky ma jazyk pohled na sva data.