[ varelg @ 14.01.2006. 18:33 ] @
Zdravo,
Dali ima nachin da se neka JavaScript funkcija overload-uje (nekoliko funkcija imaju isto ime ali razlichiti broj argumenata), poshto sam vech probao s tri funkcije sa istim imenom ali razlichitim brojem argumenata i pozvana je samo funkcija s najvechim brojem argumenata. Ostale funkcije su jednostavno ignorisane.
Ili overloading je jednostavno nemoguch u JS?
[ Br@nkoR @ 14.01.2006. 19:09 ] @
Nisam siguran da li sam najbolje razumeo problem.
Npr.
js:
Code:

function test() {
  var output ='';
  for(var i=0; i<arguments.length; i++) {
    output += ' - ' + arguments[i];
  }
  output += ' -';
  alert(output);
}


html:
Code:

<a href="#" onClick="test('jedan')">test 1</a>
<a href="#" onClick="test('jedan','dva')">test 2</a>
<a href="#" onClick="test('jedan','dva','tri')">test 3</a>
[ noviKorisnik @ 14.01.2006. 20:03 ] @
Funkcije se posmatraju kao promenljive tipa Function. Kao svakoj promenljivoj, moguće je promeniti vrednost, tako da je dozvoljeno redefinisanje funkcije. Znači, ne radi se tu o overloadingu, već se pri pozivu funkcije izvršava ona koja je poslednja pridružena pozvanom imenu.

Ako ti je pretpostavljeni overloading baziran isključivo na broju parametara, može da se simulira switchovanjem po dužini arguments niza (pogledaj Br@nkoRov primer).
[ varelg @ 14.01.2006. 23:22 ] @
OK, ja sam gledao na funkcije kao na metode u OOP-u pa se ponadao da rade na isti nachin (jedna od JS knjiga kazhe da je JS objektno orientirani jezik, ali ochigledno nije dokraja). Evo na shta sam mislio:
Code:

function a ()
{
  document.write("Iz funkcije s nula argumenata")
}

function a (x)
{
  document.write("Iz funkcije s jednim argumentom: " + x)
}

function a (x, y)
{
  document.write("Iz funkcije s dva argumenta: " + x + y)
}


Da bi posle u recimo onclick event-u od nekog dugmeta pozvao verziju funkcije "a" s recimo dva argumenta:
Code:

....... onclick = "a ('x', 'y')">

Ali ako su funkcije u JS-u samo josh jedan tip objekata onda izgleda nema nishta od overloading... da, switch-case scenario bi bio jedan od moguchih hakova...