2011-10-19 107 views
1

所以我想知道是否有人可以幫我理解jQuery的'類'是如何工作的。從我所知道的,它就像一個靜態類像這樣:jQuery類型結構

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

我想..

現在,什麼是迷惑我,是你如何調用一個方法都帶或不帶參數像這樣的:

$("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是一個函數,那麼它被用作註冊on-document-ready回調的快捷方式。

+0

參見:http://ejohn.org/apps/learn/ – romaninsh