如何创建一个选择器,如jQuery如何jQuery()或$()?

时间:2012-08-27 12:56:43

标签: javascript

我一直在为自定义布局脚本创建自己的库。为了便于使用,我试图模仿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

获取其元素

这是接近这个的正确方法吗?或者这是我提出的一种被黑客攻击的方式,有一些直接的方法可以做到这一点吗?

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

您的问题的简短版本是您正在寻找链接您的功能的能力。

这可以通过从每个函数返回相关对象来实现。如果函数没有其他返回值,则只返回this变量,将控制权传递给调用者。