Can a jQuery plug-in be local to a module?
我非常喜欢JavaScript模块模式来封装数据和逻辑。我还广泛使用jquery。我的问题是:
如果我在一个模块中定义一个jquery扩展/插件,它会像其他函数那样是该模块的本地函数吗?(我怀疑答案是否定的…)
例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | var igPartListManager = (function () { // Define a jQuery plug-in I'd like to be local to igPartListManager (function ($) { $.fn.myExtension = function () { // Do something with this.each()... } })(jQuery); var doSomethingCore = function () { // Use my jQuery plug-in $("selector").myExtension(); }; return { doSomething : doSomethingCore }; })(); |
除了igpartlistmanager,这会成功吗?
1 2 | ... $("some_unrelated_selector").myExtension(); |
如果是这样,我如何最好地将"本地"jquery扩展/插件式功能封装到模块中?
为了更好地解释这一点,我举了一个小例子,说明在定义扩展时实际会发生什么:
1 2 3 4 5 6 | (function ($) { // $ = window.jQuery; $.fn.myExtension = function () { // Do something with this.each()... } })(window.jQuery); // Note window.jQuery is basically the same as just jQuery from your example code |
每当您试图访问一个变量时,javascript引擎就会通过所有封装范围一直冒泡到
当调用此
为扩展创建本地作用域的唯一方法是在向其添加扩展之前,将
例子:javascript深度复制对象