“官方”文档http://docs.jquery.com/Plugins/Authoring#Namespacing指出应该将方法添加到jQuery插件中,如下所示。我没有经常看到这种设计模式。似乎其他插件使用var方法,可能会有冲突。这真的是首选方法,还是应该以不同方式进行?
(function( $ ){
var methods = {
method1: function( options ) {},
method2: function( ) {}
};
$.fn.tooltip = function( method ) {
if ( methods[method] ) {
return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
} else if ( typeof method === 'object' || ! method ) {
return methods.init.apply( this, arguments );
}
};
})( jQuery );
答案 0 :(得分:0)
如果你想让方法公开,那么是的,它是首选的方法。如果插件非常复杂,另一种可能且有时可取的选择是实际创建一个完整的构造对象而不是仅使用方法哈希。我不知道这真的需要再做了,因为你可以在每个实例的根元素上管理usin .data()
状态,但它的模式已经看过并且之前也很感激。
< rant>此外,我最近因为很多插件而恶化了......如果你打算开源,请确保你至少包含一个destroy
方法解开你拥有的一切。完成< /咆哮>