【发布时间】:2010-06-10 13:43:19
【问题描述】:
我正在创建一个 jQuery 插件。到目前为止它工作正常,但我对我做事的方式有疑问:
jQuery.fn.myMethod = function() {
return this.each(function(){
MyScope.doSomething(jQuery(this).attr("id"));
});
};
var MyScope = {
// The functions contained in MyScope are extremely linked to the logic
// of this plugin and it wouldn't make a lot of sense to extract them
doSomething: function(id){
// something
doSomethingElse(23);
// some more code
doSomethingElse(55);
},
doSomethingElse: function(someInt){
// some code
}
};
我使用 MyScope 来存储我所有的“私有”函数。我不希望用户能够去$("p").doSomething(),但我确实需要使用它们。
我可以移动 myMethod 函数中的所有内容,但它会创建一个 100 行长的函数,人们会因此而讨厌我。
在这种情况下,最佳做法是什么?有没有关于这个的很棒的教程?
【问题讨论】:
-
请注意,整个 jQuery 库都在一个函数中,这是一种完全合法的作用域方法,当您需要闭包时,请使用闭包:)
标签: javascript jquery jquery-plugins