Javascript 什么';在jquery插件中添加简单公共方法的最佳模式是什么?

Javascript 什么';在jquery插件中添加简单公共方法的最佳模式是什么?,javascript,jquery,design-patterns,plugins,Javascript,Jquery,Design Patterns,Plugins,我读过几篇关于最佳jquery插件模式的文章,包括官方文档- 但无论如何也不能决定什么是最适合我的需要的,也许有人会给我建议 我需要从函数内部创建一个公共方法 目前我使用的是基本插件结构: (function ($) { $.fn.plugin = function (options) { var defaults = { someoption: true }; options = $.extend(defaults, options)

我读过几篇关于最佳jquery插件模式的文章,包括官方文档-

但无论如何也不能决定什么是最适合我的需要的,也许有人会给我建议

我需要从函数内部创建一个公共方法

目前我使用的是基本插件结构:

(function ($) {

   $.fn.plugin = function (options) {
     var defaults = {
       someoption: true
     };

     options = $.extend(defaults, options);

     return this.each(function () {
       // all logic goes here...
       if (options.someoption) {
         mainMethod();
       }

       function mainMethod () {
         // main method bla bla..
         // also calls in certain circumstances this func:
         somePublicMethod();
       }

       function somePublicMethod () {
         // AND this method should be accessible like:
         // $('elem').plugin('somePublicMethod');
       }
     });
  };
})(jQuery);
这个
somePublicMethod()
func应该像
$('elem').plugin(“somePublicMethod”)一样可以访问


你有什么想法吗?

我用这个模式来制作插件。它允许我拥有私有和公共方法,如果插件没有初始化,还可以禁用调用方法

;(函数($,窗口,未定义){
"严格使用",;
/**
*我的插件
*v1.0
*/ 
$.MyPlugin=函数(选项,元素){
//这个元素
该.$el=$(元素);
这是._init(选项);
};
$.MyPlugin.defaults={
默认值1:1,
默认值2:2
};
$.MyPlugin.prototype={
/**
*私有方法
*/
_初始化:函数(选项){
//选择权
this.options=$.extend(true,{},$.MyPlugin.defaults,options);
}, 
_privateMethod:function(){
},                                                               
/**
*公共方法
*/
publicMethod:function(){
}
}; 
var logError=函数(消息){
if(window.console){
window.console.error(消息);
}                                   
};
$.fn.myPlugin=函数(选项){
这个。每个(函数(){
var self=$.data(这是“myPlugin”);
如果(选项类型=='string'){
var args=Array.prototype.slice.call(参数,1);
如果(!self){
logError('无法在初始化之前调用myPlugin上的方法;'+
“试图调用方法”+选项);
回来
}
if(!$.isFunction(self[options])| | options.charAt(0)==''.'{
logError('没有这种方法'+options+'用于myPlugin-self');
回来
}
self[选项]。应用(self,args);
}否则{
如果(自我){
self._init();
}否则{
self=$.data(这个'myPlugin',新的$myPlugin(选项,这个));
}
} 
});
归还这个;
}; 
})(jQuery,窗口);

我将此模式用于我的插件。它允许我拥有私有和公共方法,如果插件没有初始化,还可以禁用调用方法

;(函数($,窗口,未定义){
"严格使用",;
/**
*我的插件
*v1.0
*/ 
$.MyPlugin=函数(选项,元素){
//这个元素
该.$el=$(元素);
这是._init(选项);
};
$.MyPlugin.defaults={
默认值1:1,
默认值2:2
};
$.MyPlugin.prototype={
/**
*私有方法
*/
_初始化:函数(选项){
//选择权
this.options=$.extend(true,{},$.MyPlugin.defaults,options);
}, 
_privateMethod:function(){
},                                                               
/**
*公共方法
*/
publicMethod:function(){
}
}; 
var logError=函数(消息){
if(window.console){
window.console.error(消息);
}                                   
};
$.fn.myPlugin=函数(选项){
这个。每个(函数(){
var self=$.data(这是“myPlugin”);
如果(选项类型=='string'){
var args=Array.prototype.slice.call(参数,1);
如果(!self){
logError('无法在初始化之前调用myPlugin上的方法;'+
“试图调用方法”+选项);
回来
}
if(!$.isFunction(self[options])| | options.charAt(0)==''.'{
logError('没有这种方法'+options+'用于myPlugin-self');
回来
}
self[选项]。应用(self,args);
}否则{
如果(自我){
self._init();
}否则{
self=$.data(这个'myPlugin',新的$myPlugin(选项,这个));
}
} 
});
归还这个;
}; 
})(jQuery,窗口);

您需要插件的目的是您首先需要了解的内容。显然,各种操作都有很多插件。我说的是模式:)
http://jqueryboilerplate.com/
这个插件对于初学者来说是最好的,其中as``可以用作参考。@dreamweiver它很好,我已经看过了,但它不是关于添加方法和选项。您需要插件的目的是您首先需要了解的。显然,有很多用于各种操作的插件。我说的是模式:)
http://jqueryboilerplate.com/
这个插件对于初学者来说是最好的,因为as``可以作为参考。@dreamweiver它很好,我已经看过了,但它不是关于添加方法和选项,你也可以在“\u privateMethod”中使用“publicMethod”?你可以使用插件中的所有方法。插件用户不能使用私有方法。这些方法实际上不是私有的。您不能让javascript中的私有方法成为最佳实践