我目前正在开发一个相当大的插件,我想知道这种添加公共(public)方法的模式是否有任何缺点,如果有的话,这些缺点是什么?
编辑:澄清一下,使用这种方法,我看到的优点是您可以使用插件范围内可用的任何私有(private)变量,并且可以轻松链接这些方法。有哪些我看不到的缺点?它运行良好,但我不确定在可扩展性方面是否建议大型插件使用它。
这是简化的代码:
;(function($){
$.fn.myplugin = function () {
var self = this
var publicMethods = {
one: function () {
...
return self
},
two: function () {
...
return self
},
three: function () {
...
return self
}
}
for (var m in publicMethods)
self[m] = publicMethods[m]
return self
}
}(jQuery))
// Usage
var $myplugin = $('#foo').myplugin()
$myplugin.one().two().three()
最佳答案
是的,它有缺点。
您的
publicMethods
的全部正在污染 jQuery 内部命名空间。这意味着one()
,two()
和three()
也可以在其他 jQuery 对象上调用 - 在调用.myplugin()
之后- 这可能会导致意想不到的结果?以这种奇怪的方式保持代码结构(函数内部的对象)是非常难以维护的。为什么不直接添加您的
publicMethods
至$.fn
,因为这基本上就是您想要实现的目标?
我建议制作one()
, two()
和three()
只能在 myplugin()
内访问范围,这样你就可以做类似 $('#foo').myplugin().one()
的事情但不是$('#foo').one()
.
关于jquery - 添加公共(public)方法的 jQuery 插件模式的缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11258159/