簡體   English   中英

如何創建一個選擇器,如jQuery如何jQuery()或$()?

[英]How can I create a selector like how jQuery has jQuery() or $()?

我一直在為自定義布局腳本創建自己的庫。 為了便於使用,我試圖模仿jQuery如何通過jQuery()公開其庫,這使得代碼非常容易閱讀和簡單。 我想出了一些有效但我不確定這是否是正確的方法。 不是將函數保持在內部,而是將所有函數“附加”到庫中。 無論如何,到目前為止對我有用的代碼如下:

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

一個相關的函數看起來像這樣:

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

我對OOP很新,就像語言的功能一樣。 我相信有更好的方法來解決這個問題。 我遇到的問題是將Element傳遞給一個附加的函數調用,例如:

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

從slateUI.ID獲取其元素

這是接近這個的正確方法嗎? 或者這是我提出的一種被黑客攻擊的方式,有一些直接的方法來做到這一點?

// 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();

您的問題的簡短版本是您正在尋找鏈接您的功能的能力。

這可以通過從每個函數返回相關對象來實現。 如果函數沒有其他返回值,則只返回this變量,將控制權傳遞給調用者。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM