我是新手查询并试图了解下面的插件功能正在做什么,但不清楚理解。
var pluginName = 'Widgets';
function Plugin(element, options) {
/**
* Variables.
**/
this.obj = $(element);
this.o = $.extend({}, $.fn[pluginName].defaults, options);
this.objId = this.obj.attr('id');
this.pwCtrls = '.jarviswidget-ctrls'
this.widget = this.obj.find(this.o.widgets);
this.toggleClass = this.o.toggleClass.split('|');
}
如果Jquery的一位杰出人士可以一步一步解释,我真的很感激。
提前谢谢你。
此致 莫纳
答案 0 :(得分:2)
jQuery' s $.extend
将两个或多个对象的内容合并到第一个对象中。
换句话说,它需要一个带有插件默认设置的对象,然后获取作为options
传入的对象,并将它们连接在一起,以便选项覆盖默认值。
实施例
var defaults = {
setting1 : '2',
setting2 : true
}
function plugin(options) {
var settings = $.extend({}, defaults, options);
/* settings now contain
{
setting1: '2',
setting2: false
}
*/
}
plugin({
setting2: false // this is the options, they change the default settings
});
Plugin
函数本身似乎是某种构建插件的小部件的一部分,它只是为实例设置了一些常规设置。
答案 1 :(得分:1)
还记得Java的功能吗?
public class ClassName extends ClassName2 {
// class code here
}
这意味着,ClassName
将使用ClassName2
的属性和方法。
类似地,此方法用于将第一个对象中的两个对象的内容合并在一起,就像Java的方法一样。
在您的代码中,this.o
现在的值为fn[pluginName].defaults
。这就像从第二个参数复制粘贴数据到第一个参数。在JavaScript中,您处理对象,因此这里的所有内容都是对象。第二个对象的数据被转移到第一个对象。
使用此功能的另一种方法是这样的
// Merge object2 into object1
$.extend(object1, object2);