我很困惑如何最好地创建一个我正在处理的JQuery插件。创建一个jQuery插件与默认值作为插件的扩展之间有什么区别?
的基地布局我有是:
// Create Closure.
(function($) {
// Plugin definition.
$.fn.myPlugin = function(options) {
var settings = $.extend(true, {}, $.fn.myPlugin.defaults, options);
// Private:
var privateVar = 'private';
var privateFunction = function() {
alert('hidden');
}
// Public:
this.publicVar = 'public';
this.publicFunction = function() {
alert('visible');
}
return this;
};
// Plugin defaults – added as a property on our plugin function.
$.fn.myPlugin.defaults = {
foreground: "red",
background: "yellow"
};
// End Closure.
}(jQuery));
但我不知道为什么JQuery的文档(https://learn.jquery.com/plugins/advanced-plugin-concepts/),建议具有缺省值的属性,外部插件体的定义,而不是到里面。所以,我认为它可以代替实施的方式是:
// Create Closure.
(function($) {
// Plugin definition.
$.fn.myPlugin = function(options) {
// Plugin defaults – added as a property inside the plugin function.
this.defaults = {
foreground: "red",
background: "yellow"
};
var settings = $.extend(true, {}, this.defaults, options);
// Private:
var privateVar = 'private';
var privateFunction = function() {
alert('hidden');
}
// Public:
this.publicVar = 'public';
this.publicFunction = function() {
alert('visible');
}
return this;
};
// End Closure.
}(jQuery));
我该假设,如果在第二个方式创建的插件,那么违约将无法被重写?由于插件对象首先必须实例化?
如果是这样的话,为什么它真的很重要?因为它将在某个时刻被实例化...
任何人都可以在他们的观点上呐喊吗?
第一种方法使全局可访问的默认选项。这是唯一的区别。通常,这不起任何作用,因为您将这些选项与传入插件初始程序的选项一起扩展。 –