gpt4 book ai didi

javascript - 创建一个带有默认值的 jquery 插件作为插件的扩展有什么区别?

转载 作者:行者123 更新时间:2023-12-03 03:41:19 24 4
gpt4 key购买 nike

我对如何最好地创建我正在开发的 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));

我是否假设如果插件以第二种方式创建,那么默认值将无法被覆盖?因为插件对象首先必须被实例化?

如果是这样的话,那为什么它真的很重要呢?因为无论如何它都会在某个时刻被实例化......

有人可以对此发表自己的看法吗?

最佳答案

第一种方法创建默认值的一个静态版本,可以全局访问(用于覆盖等)。

第二个创建默认值的副本每个插件实例并且只能在插件实例上访问 - 因此不能以任何有意义的方式覆盖。

意见 - javascript 是一种非常开放的语言,您可以通过多种方式实现事物。当图书馆建议您以特定方式做某事时,通常最好接受建议。

关于javascript - 创建一个带有默认值的 jquery 插件作为插件的扩展有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45611248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com