2011-10-19 12 views
1

誰かがjQueryのクラスがどのように機能するかを理解するのに役立つかどうかは分かりませんでした。jQuery型のクラス構造

if(!$) { var $ = new function(){} } 

私は思う...今

、私には混乱が何であるかを、あなたとOR引数なしの両方のメソッドを呼び出すことができる方法である:私が言うことができるものから、それは、そのようなのような静的クラスのように動作しますこのようように:

$("a").removeClass("test"); 
$.get('myhtmlpage.html', myCallBack); 

私は単にdocument.getElementById(argument);

しかし、どのように返す引数を渡すと仮定していますか?このような事実の後、この議論はどのようにクラスに受け継がれていますか?また、これはメソッド連鎖の結果ですか?

何が起こっているのかを理解するのに役立つ情報は素晴らしいでしょう!ありがとう。

答えて

2

私はここでjQueryソースを扱っていますので、それを見ることもできます。

$機能

は、明示的に定義され、代わりに jQueryオブジェクトにリンクされていない:

window.$ = jQuery; 

jQueryオブジェクトは、そのように定義されています

jQuery.fn = jQuery.prototype = { 
    constructor: jQuery, 
    init: function(selector, context, rootjQuery) { 

init: function(selector部分が$('foo')例を処理します。何もパラメータが指定されていない場合は、別の機能を使用する

get: function(num) { 
+0

感謝を!その他の情報は非常に高く評価されます! – grep

2

JavaScriptの変数には$を含めることができます。たとえばfooと$ fooは異なる変数です。もちろん、$は有効なオブジェクトです。

注目すべき点は、JavaScriptではすべてがクラスであることです。関数もクラスなので、関数にもメソッドがあるかもしれません。

$ < - これはメソッドを持つ関数です。

$( 'a')< - これは何かを実行し、$を再び返す関数を実行します。

$ .get()< - これは、そのjQuery関数のメソッドを呼び出します。

$( 'a')。get()< - これは$をもう一度返す引数aで関数を実行し、そのメソッドを取得して再度実行します。

$( 'a')が呼び出されたとき、まったく同じ$が返されないときは、使用したセレクタに関する追加情報が含まれます。

最後に、$(x)を呼び出すときに注意してください。ここで、xは関数であり、ドキュメント上のコールバックを登録するためのショートカットとして使用されます。

+0

も参照してください:このためhttp://ejohn.org/apps/learn/ – romaninsh