質問: el.src; return deferred.promise(); }); $.when.apply($,deferreds).then(function() { console.log("done!"); }); ``` 上記のソースに対していくつか疑問があります。 1mapのコールバック関数内の`return deferred.promise();`は、すべての画像を`map()`で加工し終えたあとに実行される処理なのでしょうか。 2なぜapplyの第一引数に$、つまりjqueeyオブジェクトを設定しているのでしょうか。thisの参照先を弄る必要性?を感じる処理ではないように見えますが、何故でしょうか。 とりあえず、何か設定しないといけないので、採用理由は、不明ですが、jqueryオブジェクトを設定したということですか。 3apllyの第二引数に指定したもの(deferreds)は、レシーバオブジェクト(when)に渡す引数ですが、これは、whenに渡された後どうなるのでしょうか。
回答: > > 2なぜapplyの第一引数に$、つまりjqueeyオブジェクトを設定しているのでしょうか。thisの参照先を弄る必要性?を感じる処理ではないように見えますが、何故でしょうか。 > > > 「thisの参照先を弄る必要性はない」のかもしれませんが、`.apply`を使う以上は**指定が必要です**。なので、`$.when()`と呼んだ場合に`this`が`$`となるのにあわせて、`$`を指定しています。 もし`$.when()`が本当に`this`を使うのならこう書かないと動きませんし、逆に`this`を参照しなかった場合にも特に害はありません。