3

我一直在为自定义布局脚本创建自己的库。为了易于使用,我试图模拟 jQuery 如何通过 jQuery() 公开其库,这使得代码非常易于阅读和直接。我想出了一些可行的方法,但我不确定这是否是正确的方法。不是将函数保留在内部,而是将所有函数“附加”到库中。无论如何,到目前为止对我有用的代码如下:

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

一个相关的函数看起来像这样:

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

我对 OOP 很陌生,比如语言的特性。我确信有更好的方法来解决这个问题。我遇到的问题是将元素传递给附加的函数调用,例如:

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

从 slateUI.ID 获取其元素

这是解决这个问题的正确方法吗?或者这是我想出的一种黑客方式,并且有一些直接的方法可以做到这一点?

4

2 回答 2

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();
于 2012-08-27T17:38:54.763 回答
0

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

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

于 2012-08-27T13:13:07.997 回答