【发布时间】:2013-12-31 12:52:21
【问题描述】:
我真的很喜欢 JavaScript 模块模式来封装数据和逻辑。我也在广泛使用 jQuery。我的问题是这样的:
如果我在一个模块中定义一个 jQuery 扩展/插件,它会像其他函数一样是该模块的本地吗? (我怀疑答案是否定的……)
例子:
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 之外,这会成功吗?
...
$("some_unrelated_selector").myExtension();
如果是这样,我如何最好地将“本地”jQuery 扩展/类似插件的功能封装在一个模块中?
【问题讨论】:
-
变量是作用域的局部变量,而不是模块,但在这种情况下,jQuery 插件是一个函数,一个函数会创建一个新的作用域,所以是的!但是,$ 是一个全局变量,所以当在选择器中使用正确的引号时,插件可以工作。
标签: javascript jquery jquery-plugins module-pattern