在jquery中扩展函数

时间:2014-05-18 07:24:29

标签: javascript jquery

我是新手查询并试图了解下面的插件功能正在做什么,但不清楚理解。

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的一位杰出人士可以一步一步解释,我真的很感激。

提前谢谢你。

此致 莫纳

2 个答案:

答案 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);

更多信息:http://api.jquery.com/jquery.extend/