2014-05-18 3 views
0

Я новичок в запросе и пытаюсь понять, что работает под плагином, но не понятно.Функция расширения в 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

JQuery-х $.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

Помните о функции 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/

Смежные вопросы