Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Снова о функции с переменным кол-во аргументов (https://javascript.ru/forum/misc/24033-snova-o-funkcii-s-peremennym-kol-vo-argumentov.html)

aleksp 15.12.2011 21:46

Снова о функции с переменным кол-во аргументов
 
Сразу скажу что найти ответ пытался, но этот вопрос можно сформулировать очень разнородно, потому мог и пропустить решение, если таковое имеется. :)

Допустим, работаем с функцией $.when( arg1, arg2, ...., argn ) библиотеки jQuery. Далее, имеем такой массив: dfds = array(dfd1, dfd2, ..., dfdn), где dfdn - это deferred-объекты;

Задача: как передать одновременно все dfdn-объекты в функцию $.when()? Понятно, что прямой подход $.when(dfds[1], dfds[2] ....) нелеп, поскольку неизвестно сколько будет тех самых dfdn.

Вообщем, тот массив объектов необходимо преобразовать во что-то, что можно было бы передать в функцию $.when(), причем так, как будто бы вызов был произведен в обычном виде.

array(dfd1, dfd2, ..., dfdn) => ?????
????? => $.when(????)
$.when(????) === $.when(dfds[1], dfds[2] ....)

:help:

trikadin 15.12.2011 22:03

aleksp, эх, я тут такие красивые слайды про ECMAScript 6 посмотрел. Там так красиво это делалось! А вам - придётся вот так вот:

$.when.apply($, dfds);

Nekromancer 15.12.2011 22:11

trikadin,
Ага, новенький синтаксис там очень приятный )

aleksp 15.12.2011 22:16

... мде, позор на мою голову.
Я, кстати, вот сейчас такое придумал
var result = function()
                        {
                            for (var i = 0; i < dfdArray.length; i++)
                            {
                                Array.prototype.push.call(arguments, dfdArray[i]);
                            }

                            return $.when.apply({}, arguments)
                                .done(function() { if (!options.silent) self.fireEvent('change', self); })
                                .fail(function() {});
                        }();


Суть та же, но через задницу :))

trikadin 15.12.2011 22:22

Цитата:

Сообщение от Nekromancer
Ага, новенький синтаксис там очень приятный )

Сахара куча)

Цитата:

Сообщение от aleksp
Суть та же, но через задницу )

Мы не ищем лёгких путей, это называется.

Aetae 16.12.2011 00:57

Не люблю сахар.=\
А может я просто ортодокс...

trikadin 16.12.2011 01:05

Цитата:

Сообщение от Aetae
Не люблю сахар.=\
А может я просто ортодокс...

Всё может быть. Но вообще, я сегодня задумывался о том, что это не так наглядно, как обычные function и т.д.

Хотя деструктуризация в любом случае хорошая штука. И let.

devote 16.12.2011 01:26

var result = function() {
    for (var i = 0; i < dfdArray.length; i++) {
        Array.prototype.push.call( arguments, dfdArray[i] );
    }

    return $.when.apply({}, arguments)
        .done(function() {
            // if (!options.silent) self.fireEvent('change', self); // зачем это?
            if ( !options.silent ) $( self ).change();
        }).fail(function() {});
}();

trikadin 16.12.2011 01:40

devote, ты это к чему? И ошибка, к тому же) Ты jquery подключить забыл)

А, я понял. Да забей. Некропост уже.

devote 16.12.2011 01:42

Цитата:

Сообщение от trikadin
Ты jquery подключить забыл)

Да это у меня привычка уже run добавлять

Aetae 16.12.2011 01:55

Цитата:

Сообщение от trikadin (Сообщение 143372)
И ошибка, к тому же)

Неча запускать всякую фигню.)
゚ω゚ノ= /`m´)ノ ~┻━┻   //*´∇`*/ ['_']; o=(゚ー゚)  =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ,゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ,゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + ((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; (゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\'; (゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];(゚Д゚) [゚o゚]='\"';(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+(゚Д゚)[゚o゚]+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (c^_^o)+ (゚ー゚)+ (゚Θ゚)+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (c^_^o)+ (゚ー゚)+ (゚ー゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (c^_^o)+ (゚ー゚)+ (゚ー゚)+ (゚Д゚) [゚Θ゚]+ (゚Д゚)[゚ε゚]+(゚ー゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (c^_^o)+ (゚ー゚)+ (゚ー゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (c^_^o)+ (゚ー゚)+ (゚ー゚)+ (゚Д゚) .゚Θ゚ノ+ (゚Д゚)[゚ε゚]+(゚ー゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (c^_^o)+ (゚ー゚)+ (゚ー゚)+ (゚Д゚) .゚ー゚ノ+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (c^_^o)+ (゚ー゚)+ (゚ー゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (c^_^o)+ (゚ー゚)+ (o^_^o)+ (゚Д゚) .゚Д゚ノ+ (゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (o^_^o)+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (c^_^o)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚) .゚ー゚ノ+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (c^_^o)+ (゚ー゚)+ (゚ー゚)+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (c^_^o)+ (゚ー゚)+ (o^_^o)+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (c^_^o)+ (゚ー゚)+ (o^_^o)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (c^_^o)+ (゚ー゚)+ (o^_^o)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (c^_^o)+ (゚ー゚)+ (゚ー゚)+ (o^_^o)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (c^_^o)+ (゚ー゚)+ (o^_^o)+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (c^_^o)+ (゚ー゚)+ (o^_^o)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (c^_^o)+ (゚ー゚)+ (゚ー゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚ー゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (c^_^o)+ (゚ー゚)+ (゚ー゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (c^_^o)+ (゚ー゚)+ (o^_^o)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚ー゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (c^_^o)+ (゚ー゚)+ (゚ー゚)+ (o^_^o)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (c^_^o)+ (゚ー゚)+ (゚ー゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (c^_^o)+ (゚ー゚)+ (o^_^o)+ (゚Д゚) .゚Д゚ノ+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (c^_^o)+ (゚ー゚)+ (o^_^o)+ (゚Д゚) .゚ω゚ノ+ (゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+ (o^_^o)+ (゚Д゚)[゚o゚]) (゚Θ゚)) ('_');

trikadin 16.12.2011 02:14

Aetae, чёрт, клёво) Фишка в кодировке? В том, что браузер всё в utf отдаёт?

Ах да, забыл сказать - ff рубит зависшие скрипты)

Aetae 16.12.2011 02:27

http://habrahabr.ru/blogs/javascript/112530/

trikadin 16.12.2011 02:32

Вот это порадовало:

http://mathiasbynens.be/demo/css-without-html

aleksp 16.12.2011 03:15

Цитата:

Сообщение от devote (Сообщение 143370)
var result = function() {
    for (var i = 0; i < dfdArray.length; i++) {
        Array.prototype.push.call( arguments, dfdArray[i] );
    }

    return $.when.apply({}, arguments)
        .done(function() {
            // if (!options.silent) self.fireEvent('change', self); // зачем это?
            if ( !options.silent ) $( self ).change();
        }).fail(function() {});
}();

Затем, что это кусок метода из класса, основанного на MooTools ;)
Использую ядро мутулза для работы с классами.

devote 16.12.2011 03:22

Цитата:

Сообщение от aleksp
Использую ядро мутулза для работы с классами.

ааа... просто fireEvent это иешный метод, поэтому я так среагировал


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