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); Но видимо это нельзя, т.е. надо передавать объекты похоже?

Kolyaj 20.01.2010 18:21

Цитата:

Сообщение от mycoding
надо передавать объекты похоже?

Да, в таких случаях передают объект.

x-yuri 24.01.2010 07:38

кстати, интересный холивар про перегрузку и не только

Dmitry A. Soshnikov 24.01.2010 17:43

Цитата:

Сообщение от x-yuri
кстати, интересное обсуждение перегрузки и не только

Холивор какой-то с описанием через призму конкретного (привычного) языка.

x-yuri 28.01.2010 09:11

Цитата:

Сообщение от Dmitry A. Soshnikov
через призму конкретного (привычного) языка.

у кого как

mycoding 28.01.2010 09:21

Я вот, что-то на Narative Javascript обратил внимание, если правильно понял, то с его помощью можно и перегрузку функций сделать.

x-yuri 28.01.2010 09:47

с чего ты это взял?
зачем тебе перегрузка функций?

mycoding 28.01.2010 12:44

В принципе не зачем, но сам факт , что это всё же можно сделать, это уже
интересно.

x-yuri 28.01.2010 13:15

Цитата:

Сообщение от Kolyaj
А т.к. JavaScript язык нетипизированный, то и быть не может

---
Цитата:

ag
интересно...а что делают анимированные гифы когда лежат на сервере и их никто не трогает?
http://bash.org.ru/quote/392864


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