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

时间:2014-07-10 23:56:53

标签: javascript jquery function oop scope

是否有将jquery函数的范围限制为除使用main函数之外的对象:

(function( $ ) {

    $.fn.myLib = function( funcName ) {

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

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

    };

}( jQuery ));

我想这样做,以便我可以调用这样的函数:

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

2 个答案:

答案 0 :(得分:1)

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

$(el).myLib.func1();

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

$.fn.myLib = {};
$.fn.myLib.func1 = function(...) {...};
$.fn.myLib.func2 = function(...) {...};

如果你真的希望能够接受jQuery对象(我认为),那么坚持一个级别并使用名称前缀,无论如何都会为你提供相同级别的名称冲突保护。

$.fn.myLibFunc1 = function(...) {...};
$.fn.myLibFunc2 = function(...) {...};

然后,你可以这样做:

$(el).myLibFunc1();

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

答案 1 :(得分:0)

(function( $ ) {
$.fn.myLib = function( funcName ) {
   var obj=new Object
   obj.func1=function () {alert('first')}
   obj.func2=function () {alert('second')}
   return obj

};
}( jQuery ));