戻り値のリテラル関数の引数の出所はどこなの?
お世話になっております。現在JavaScriptの勉強をしております。
その一環としてPrototype.js ver 1.6.1 を解読しているのですが
Enumerable 等のメソッドで出てくる return でリテラル関数を指定するような部分が多々見受けられるのですが…この意味がイマイチ感覚がつかめず困っています。
例:Prototype.js 702行目付近
Enumerable = (function(){...
の collectメソッド(743行目付近)
function collect(iterator, context) {
iterator = iterator || Prototype.K;
var results = [];
this.each(function(value, index) {
results.push(iterator.call(context, value, index));
});
return results;
}
などの
this.each(function(value, index) {
results.push(iterator.call(context, value, index));
}
部分で
function(value, index)...
とあるvalue, index はどこでどれから指定されるのかがよくわかりません。
[1,2,3,4].collect(a,b);
と呼び出した場合、collect(a,b){... と呼ばれますが value と indexには何がどうやって指定されるのでしょうか?
このような記法が把握できず、混乱を極めている状態です。
どなたかお手数ですがお教え願えないでしょうか?
よろしくお願いいたします。
お礼
>>> 「$('li').each( ... )」と言う形で処理を指定すると全ての <li> 要素に対して処理を実行してくれます。 cssで例えると.eachは li { 処理 } のようにそのページ内のすべてのli要素を処理してくれる?当たる?ということでしょうか? 「$('li').click( ... )」などeachでない場合。 cssで例えると.eachは li.only-this { 処理 } のようにそのページ内のすべてのli.only-this要素しか処理してくれれない?当たる?ということでしょうか? つまりそのたliは処理しない。 >>> 本来なら配列の中身を1つずつ取り出して順に処理しなければいけない li.only-this1 li.only-this2 li.only-this3 と一つずつ処理しないといけないというのは上記のようなイメージですか? >>> HTML内に複数の <li> タグがある状況で「$('li')」というセレクタを使用すると、jQuery は全ての <li> 要素を配列として用意します。 documentオブジェクトにそのページ内のliがすべて配列として入っているということですか?
補足
$(function() { $('p').each(function() { $(this).css('color', 'red'); }); })(); $(function() { $('p').css('color', 'red'); })(); 上記二つとも同じ結果になりました。