Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 05.02.2014, 13:46
Профессор
Посмотреть профиль Найти все сообщения от Maxmaxmaximus7
 
Регистрация: 08.01.2014
Сообщений: 354

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

типа .apply(arr) и .apply([1,2,3]) ну так некрасиво, лишние скобочки в которых нет нужды. по этому сделали чтобы без них было.
Ответить с цитированием
  #12 (permalink)  
Старый 05.02.2014, 13:55
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Сообщение от Maxmaxmaximus7
типа .apply(arr) и .apply([1,2,3]) ну так некрасиво, лишние скобочки в которых нет нужды. по этому сделали чтобы без них было.
+
В массиве передавать один-два аргумента будет реально не удобно.

function fn(a, b, c) {
   fn.apply(null, [a, c]);
   //fn.call(null, a, c);
}

function fn2(a, b) {
   alert(a + b);
}

fn(2, null, 3);


С call'ом на три символа меньше, да и работает он вроде быстрее, если не ошибаюсь.
Ответить с цитированием
  #13 (permalink)  
Старый 05.02.2014, 14:01
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от Ruslan_xDD Посмотреть сообщение
+
В массиве передавать один-два аргумента будет реально не удобно.

function fn(a, b, c) {
   fn.apply(null, [a, c]);
   //fn.call(null, a, c);
}

function fn2(a, b) {
   alert(a + b);
}

fn(2, null, 3);


С call'ом на три символа меньше, да и работает он вроде быстрее, если не ошибаюсь.
function fn(a, ...args) {
   fn.apply(null, args);

   // ну или бюджетный способ
   fn.apply(null, [].slice.call(arguments, 1));
}

function fn2(a, b) {
   alert(a + b);
}

fn(2, null, 3);


Казалось бы разницы нет, но в случае добавления новых аргументов в fn2 нам не придётся добавлять их и в call, т.е. код с apply более короткий гибкий и удобный.

А скорость в таких вещах - это последнее на что нужно смотреть, т.к. разница там мизерна, и 99.99% что это не критическое место в вашем приложении и оптимизация этого места не будет даже заметна.
__________________
kobezzza
code monkey
Ответить с цитированием
  #14 (permalink)  
Старый 05.02.2014, 14:10
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

Отвечаю Maxmaxmaximus7, дабы он яркая персона...
Сообщение от Maxmaxmaximus7 Посмотреть сообщение
с чего это мне держать свое мнение при себе?
Потому что это не красиво.
Я сказал, что занимаюсь давно, но есть пробел в этой теме и хочу его заполнить. И это не означает что я полный нуб. усек?
Я последнее. я не хочу выяснять отношения. мне нужен всего лишь ответ на вопрос. учись как отвечают danik.js и kobezzza, нормально и без публичных обсужений.


Отвечаю kobezzza
Сообщение от kobezzza Посмотреть сообщение
apply не удобно использовать при передачи параметра-массива и забыв про это можно ловить забавные баги.
ммм. не понял. забыть что в apply передается массив, а не список?? это как??)))) имхо, но это тоже самое как забыть разницу между setTimeout и setInterval.... Или может я мысль не правильно понял))



Отвечаю danik.js
Сообщение от danik.js Посмотреть сообщение
У тебя в примере заранее известны все аргументы. В реале же число аргументов может быть разным и приходить ввиде массива. Как ты в таком случае обойдешься без apply?
ммм. вот это интересно...

т.е. получается, если известен список передаваемых аргументов (например как у меня), то впринципе можно использовать и то и то.. но лучше call. а если список аргументов идет изначально массивом, то лучше использовать apply, дабы не разбарать массив на простые составляюшие. правильно понял?
Ответить с цитированием
  #15 (permalink)  
Старый 05.02.2014, 14:18
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

skrudjmakdak, такое ощущение, что ты не читал всё что здесь написали. Если ты не понимаешь в чём разница и где что применять, то ты правда ещё совсем зелёный (обижаться на это глупо).
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 05.02.2014 в 14:20.
Ответить с цитированием
  #16 (permalink)  
Старый 05.02.2014, 14:20
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

пока писал дофига мне написали..
Ответить с цитированием
  #17 (permalink)  
Старый 05.02.2014, 14:30
Профессор
Посмотреть профиль Найти все сообщения от Maxmaxmaximus7
 
Регистрация: 08.01.2014
Сообщений: 354

Сообщение от skrudjmakdak
И это не означает что я полный нуб. усек
а я не говорю что ты оплный нуб, я именно что сказал что хвастаться тут что ты давн занимаешься вообще было не к лицу. задаешь детский вопрос новичков, и тут же хвастаешься что давно программируешь чтобы все не подумали что ты новичек. как то глупо смотрится, по этому я это и высмеял.

Сообщение от skrudjmakdak
я не хочу выяснять отношения. мне нужен всего лишь ответ на вопрос.
тогда зачем ты сказал что ты давно занимаешься яваскриптом и какое это имеет отношение к вопросу? если ты не хочешь разговаривать ни о чем кроме вопроса, то почему поднимаешь посторонние темы?
Ответить с цитированием
  #18 (permalink)  
Старый 05.02.2014, 14:34
Профессор
Посмотреть профиль Найти все сообщения от Maxmaxmaximus7
 
Регистрация: 08.01.2014
Сообщений: 354

блять одна функция принимает массив параметров, другая просто параметры, он блять говорит зачем вторая так как можно параметры запихать в массив и передать в первую, ну не наркоман ли?

ухожу с темы, ты правда зеленый еще, еще и обижается, давно он программирует, как же
если кто хочет с ним возитьяс возитесь, я сделал все что смог.
Ответить с цитированием
  #19 (permalink)  
Старый 05.02.2014, 14:40
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

Maxmaxmaximus7, вот представь себе, занимаюсь давно. а вот эту тему упустил. одно время я ими вообще не оперировал, даже не знал о их существовании. этой темы вообще небыло в том учебнике, по которому я учился. оперировать стал недавно, прочитав случайно на этом сайте. звучит странно, очень странно, но это действительно так
Ответить с цитированием
  #20 (permalink)  
Старый 05.02.2014, 14:48
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Делаю последнюю попытку объяснить и тоже сливаюсь:

У тебя есть массив, в нём хз сколько элементов, задача найти максимальный элемент. Вспоминаешь про Math.max:

// Пример
Math.max(1, 2, 3, 4, 5);


Вспоминаешь про .apply

var myArray = [хз сколько элементов];

// Урра всё работает!
Math.max.apply(null, myArray);


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

Всё, я удаляюсь.
__________________
kobezzza
code monkey
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чем отличие bind от call и apply? platedz Events/DOM/Window 11 08.04.2013 07:24
Практическое применние apply, call TicTac Общие вопросы Javascript 10 26.06.2011 12:18
apply и call. В чём отличия? B~Vladi Оффтопик 49 24.09.2009 10:35