Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Перегрузка методов и функций (https://javascript.ru/forum/misc/7194-peregruzka-metodov-i-funkcijj.html)

mycoding 20.01.2010 12:50

Перегрузка методов и функций
 
Есть ли в javascript перегрузка методов и функций?

Kolyaj 20.01.2010 12:52

Т.к. объекты это хэши, то очевидно нет. А т.к. JavaScript язык нетипизированный, то и быть не может.

Работа с аргументами функций в JS достаточно прозрачна, так что лично я в перегрузке не вижу смысла.

mycoding 20.01.2010 13:49

Да вы правы вот этот код показывает, что перегрузок нет
function cout()
{
alert(1);
}

function cout(str)
{
alert(str);
}

cout();
cout("Привет");

mycoding 20.01.2010 13:52

И ещё хотел спросить, в книге есть пример чего вроде такого, но там толи это очень сложно, то ли .... ?
cout(value=6,str='Привет');


Но этот способ не работает
function cout(str,value)
{
alert("str="+str);
alert("value="+value);
}

cout(value=6,str='Привет');

Kolyaj 20.01.2010 13:56

Цитата:

Сообщение от mycoding
cout(value=6,str='Привет');

Тут всего лишь глобальной переменной value присваивается 6, глобальной переменной str присваивается 'Привет', потом 6 и 'Привет' передаются в cout, т.к. оператор = возвращает присваиваемое значение. Возможности передавать именованные аргументы в JS нет.

Nekromancer 20.01.2010 14:00

если под перезагрузкой функций вы понимаете - перезоздание.. то чем не вариант:
function bla(){
alert('bla');
}
delete window.bla;
function bla(){
alert('другое bla');
}

Kolyaj 20.01.2010 14:29

http://ru.wikipedia.org/wiki/%D0%9F%...%D0%B8%D0 %B9

Dmitry A. Soshnikov 20.01.2010 14:55

Перегрузка функций по параметрам - это ограничение компилируемых языков со статической типизацией. JS избавлен от этого. Здесь можно, при вызове одной и той же функции, передавать множество параметров разных типов.

Nekromancer 20.01.2010 15:22

Цитата:

Сообщение от Kolyaj (Сообщение 41218)

ясно :write:

mycoding 20.01.2010 18:09

Я задачю немного упростил, просто бывает так что надо передать огромное количество переменных,
т.е. cout('Привет',true,6,10,null,.....,n);
И чтобы не забыть последовательность сделать именно так,
cout(value=6,str='Привет',....,n); Но видимо это нельзя, т.е. надо передавать объекты похоже?


Часовой пояс GMT +3, время: 23:43.