我如何创建一个选择器,就像jQuery有jQuery()或$()一样

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

本文关键字:jQuery 就像 一样 选择器 何创建 创建 一个      更新时间:2023-09-26

我一直在为自定义布局脚本创建自己的库。为了便于使用,我试图模拟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变量,将控制权传递回调用方。

相关文章: