2013-07-17 8 views
6

の109ページ「JavaScriptデザインパターンの学習」には、私を混乱させるコードサンプルがあります。jqueryステートメント "var collection = jQuery([1]);"とは何ですか?平均?

jQuery.single = (function(o){ 

    var collection = jQuery([1]); // <-- i want to ask this line 
    return function(element) { 

     // give collection the element 
     collection[0] = element; 

     // return the collection 
     return collection; 
    } 
})(); 

機能の使用は、このようなものです:

$('div').on('click', function() { 
    var html = jQuery.single(this).next().html(); 
    console.log(html); 
}); 

更新:答えるため 感謝。私は76 bytes for faster jQuery

var collection = jQuery([1]); // Fill with 1 item, to make sure length === 1 

は、今私は理解して著者ページから元のコードのソースをチェックアウト。彼がこのコードサンプルを引用したときに、この本の著者 "JavaScript Design Patternsの学習"がこのコメントを追加してくれることを願っています。

+0

私は '[1]'という配列を関数に渡していると思います! – NINCOMPOOP

+1

関連リンクを投稿すると簡単になります – bipen

+4

ここを見てくださいhttp://james.padolsey.com/javascript/76-bytes-for-faster-jquery/ –

答えて

6

jQuery([1])は、整数1を含む1つのエントリをjQueryに渡すだけで、すべてのjQueryプロトタイプメソッドを含む配列にラッパーを返します。

後でelement引数変数を非常に同じ配列に割り当ててから、jQueryインスタンス全体を返します。

その様子から、全体の機能は、単に再利用 jQueryオブジェクトに単一要素を注入し、それを返します。

何かを速くすると思われます.1秒間に数百万回の繰り返しを数えると実際には起こりますが、私の意見では、これは長いデバッグ時間の間にあなたを噛む可能性のあるマイクロ最適化の明確なケースです。 - パーフェクトキル

+0

そして、その未使用の 'o'パラメータはどのように役立ちますか? –

1

定義済みの配列をjQuery()関数に渡します。私は、彼らがこれを行う理由はので、どのように多くの要素上の任意の混乱がありますはないと思う

var collection = jQuery(new Array(1)); // or even $(new Array(1)); 

- あなたはまた、それが好きで書くことができます

「だけで1要素を持つ新しい配列」[1]を意味してみましょう配列内にある。

+0

ちょうどメモ: 'new Array(1)'は '[1]'と同じではありません。 – David

関連する問題