質問: [1,3,4,6,8];//配列` のふたつがある場合、 それぞれの要素に対して処理する時は、 1の場合 ``` boxes.each(function(){}) ``` 2の場合 ``` $.each(ary,function(){}) ``` と書くようにと、あるテキストに書いてあったのですが、 1と2にはどのような違いがあるのですか?
回答: 1は`$.fn.each`、2は`$.each`を利用しています $.fn.each と $.each は似ているけれど、少し違う関数です $.fn.each は1引数(function)で、$.each は2引数(array, function)です eachできる値も異なります ``` $('div').each(myFunction) ^^^^^^^^ jQueryオブジェクトのみ $.each($('div'), myFunction) ^^^^^^^^ jQueryオブジェクト or 配列 ``` jQueryオブジェクトにeachする場合、上の2つは必ず同じ結果になるのでどちらの記述をしても問題ありません 1の記述の方が短く、jQueryオブジェクトを使っていることがわかりやすいので好まれています 配列にeachする場合、上の記述は使えませんので、必ず2の記述をする必要があります ``` var $myDiv1 = new jQuery('div'); // $('div') と同じ ^^^^^^^ ^^^^^^ インスタンス クラス var $myDiv2 = new jQuery('div'); ^^^^^^^ ^^^^^^ インスタンス クラス ``` クラスを`new`するとインスタンスが生成されます クラスとインスタンスは異なるものなので、持っているメソッドも異なります 例えば 「jQueryクラス」は html という名前のメソッドは持ちません (`typeof $.html === 'undefined'`) 「jQueryインスタンス」は html という名前のメソッドを持っています (`typeof $('div').html === 'function'`) 今回は偶然「jQueryクラス」「jQueryインスタンス」 が両方 `each` という名前のメソッドを持っています 1は「jQueryインスタンス」のメソッド `each` 2は「jQueryクラス」のメソッド `each` です 一般に、jQueryクラス と jQueryインスタンス をあまり区別をせず、両方を指して「jQuery」と呼ぶこともあります なので、「12のどちらもjQueryのメソッドですか?」という質問は少し答えにくいのですが、12は異なるものに所属しているので「違う」と答えるのが一般的だと思います