2012-08-27 32 views
3

我一直在爲自定義佈局腳本創建自己的庫。爲了便於使用,我試圖模仿jQuery如何通過jQuery()使其代碼庫更容易閱讀和直觀。我已經想出了一些可行的方法,但我不確定這是否是正確的方法。而不是保持內部功能,所有的功能都「附加」到庫中。不管怎麼說,這對我來說,到目前爲止的工作的代碼如下:

slateUI = (function(slateID){ 
    slateUI.ID = slateID; 
    return slateUI; 
}); 

和相關的功能看起來是這樣的:

slateUI.doSomething = function(content) 
{ 
    //DID SOMETHING USING slateUI.ID 
} 

我是相當新的OOP像語言的特點。我相信有更好的方法來解決這個問題。我已經被傳承的元素添加到appened函數調用所以實例的問題:

slateUI("#someSlate").doSomething(...) 

從slateUI.ID

獲得其元素這是解決這個正確的方法是什麼?或者這是我提出的一種黑客方式,有一些簡單的方法可以做到這一點?

+0

我可能會誤解你,但是我正確地認爲它是jQuery中的方法調用的鏈接嗎? – sQVe

+0

是的,能夠傳入一個元素,然後傳遞給鏈中的功能(所以他們知道該怎麼操作) –

+0

更多的信息在這裏http://stackoverflow.com/questions/7475336/how-does-jquery - 鏈接工作 –

回答

1
// function which returns a new SlateUI object (so we dont have to use the "new" keyword) 
slateUI = function (slateID) { 
    return new SlateUI(slateID); 
}; 

// class definition 
function SlateUI (slateId) { 
    this.id = slateId; 
} 
// methods added to the class prototype (allows for prototypical inheritance) 
SlateUI.prototype.someFunction = function() { 
    alert(this.id); 
    return this; // adding this line to the end of each method allows for method chaining 
}; 

// usage 
slateUI('someid').someFunction(); 
+0

Answet非常好,但jquery返回陣列有每個鏈中的元素請告訴我如何做到這一點 緊急 – Marwan

0

你的問題的簡短版本是,你正在尋找能夠鏈接你的功能。

這可以簡單地通過從每個函數返回相關對象來實現。如果該函數沒有其他返回值,那麼只需返回this變量,即可將控制權交還給調用者。

+0

和slateUI.ID是存儲元素標識符的正確方法? –

相關問題