Javascript 有没有办法将jquery函数包装到对象?

Javascript 有没有办法将jquery函数包装到对象?,javascript,jquery,function,oop,scope,Javascript,Jquery,Function,Oop,Scope,除了使用主函数外,是否还可以将jquery函数的作用域限制为对象: (function( $ ) { $.fn.myLib = function( funcName ) { if ( action === "func1") { // Open popup code. } if ( action === "func2" ) { // Close popup code. }

除了使用主函数外,是否还可以将jquery函数的作用域限制为对象:

(function( $ ) {

    $.fn.myLib = function( funcName ) {

        if ( action === "func1") {
            // Open popup code.
        }

        if ( action === "func2" ) {
            // Close popup code.
        }

    };

}( jQuery ));
我想这样做,以便调用如下函数:

$(el).myLib.func1();
$(el).myLib.func2();

没有太多好的理由尝试这样做:

$(el).myLib.func1();
因为执行
func1()
时,
this
指针将是
myLib
,您将无法访问
$(el)
。所以,除非您只需要静态方法,否则它不会给您带来很多好处。如果这是您真正想要的,那么您可以这样做:

$.fn.myLib = {};
$.fn.myLib.func1 = function(...) {...};
$.fn.myLib.func2 = function(...) {...};
如果您真的希望能够访问jQuery对象(我认为是这样),那么请坚持使用一个级别,并使用名称前缀,这将为您提供大致相同级别的名称冲突保护

$.fn.myLibFunc1 = function(...) {...};
$.fn.myLibFunc2 = function(...) {...};
然后,您可以执行以下操作:

$(el).myLibFunc1();

而且,myLibFunc1中的
this
指针将是调用它的jQuery对象。

Yuup这就是我的目标(仍然能够访问“this”)。我将坚持使用替代方法(mylibFunc1();)
(function( $ ) {
$.fn.myLib = function( funcName ) {
   var obj=new Object
   obj.func1=function () {alert('first')}
   obj.func2=function () {alert('second')}
   return obj

};
}( jQuery ));