目前我正在研究一个jquery插件并查看其他插件代码,我发现了一种通常的方式来编写它通过一个对象,有点像:
$.fn.myplugin = function(method){
//... some code
object = new $.myobject(param);
//... other code
// myobject definition
$.myobject = function(param){
//.... my object code
}
}
我无法理解$ .myobject定义的工作原理以及许多开发人员使用它来定义插件的原因。
如果可能的话,你能提供一些信息和教程/文件链接吗?
答案 0 :(得分:1)
在运行时向javascript对象添加属性的能力使每个javascript对象成为'expando'对象。
这里有一个解释
Stack overflow question on javascript expando objects
希望这会有所帮助:)
答案 1 :(得分:1)
jQuery的真正威力在于能够轻松快速地选择和操作
DOM元素。幸运的是,我们可以通过添加我们的包装方法来扩展这种功能
拥有我们认为适当的操纵选定的DOM元素。通过添加wrap-per方法,我们可以自动使用强大的jQuery选择器进行选择
并选择要操作哪些元素而无需完成所有工作
我们自己。
鉴于我们对JavaScript的了解,我们可能已经想到了我们的
拥有如何将实用程序函数添加到$ namespace,但这不一定正确
包装函数。我们需要一些特定于jQuery的信息
知道:要为jQuery添加包装器方法,我们必须将它们作为属性分配给
$ namespace中名为fn的对象。
创建包装函数的一般模式是
$.fn.wrapperFunctionName = function(params){function-body};
让我们编写一个简单的包装器方法来设置匹配的DOM元素的颜色 蓝色:
(function($){
$.fn.makeItBlue = function() {
return this.css('color','blue');
};
})(jQuery);
答案 2 :(得分:0)
我认为这只是避免污染全球范围的众多方法之一。开发人员将他们的插件作为jQuery
本身的属性,通过window.myPlugin
或者他们更喜欢建筑
$.tooltip(someObjects, "text")
比
$(someObjects).tooltip("text")
或者想要采用两者。
然而,作为一种避免代码污染的方法,我建议使用自调用函数,而不是使用无意义的包装器来扩展jQuery。
(function($) {
// put here any variables or functions you need
// they will stay within the self invoking function scope
function setup(element) {
// add extra features to the matched element
}
$.fn.tooltip = function() {
return this.each(function(index, element) {
setup(element);
});
}
})(jQuery);
如果您提出问题,可以在我的一篇文章中read more。