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

标签 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();

最佳答案

确实没有太多充分的理由尝试这样做:

$(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 对象。

关于javascript - 有没有办法将 jquery 函数包装到对象中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24688146/

相关文章:

javascript - 单击链接时添加新的下拉列表

javascript - 如何处理按下 ENTER 键以触发 onBlur() 事件?

javascript - 如何使用 drupal View 使图像流链接到内容或产品

javascript - CSS 属性转换失败

javascript - 如何从ajax响应加载dhtmlx网格中的数据?

javascript - $window.load 和 window.onload 有什么区别?

function - 在 Dart 中定义函数时,如何将参数的默认值设置为 { },即空 Map?

javascript - 函数内javascript中的setTimeout

javascript - 获取图像尺寸

c# - 将字符串数组从 C# 传递到 javascript