【发布时间】:2017-02-06 15:41:46
【问题描述】:
我正在寻找扩展引导插件的正确方法,并找到了这个答案:https://stackoverflow.com/a/12689534/1276032
让我烦恼的是最后一部分 - 初始化覆盖。复制代码如下:
// override the old initialization with the new constructor
$.fn.modal = $.extend(function(option) {
var args = $.makeArray(arguments),
option = args.shift();
return this.each(function() {
var $this = $(this);
var data = $this.data('modal'),
options = $.extend({}, _super.defaults, $this.data(), typeof option == 'object' && option);
if ( !data ) {
$this.data('modal', (data = new Modal(this, options)));
}
if (typeof option == 'string') {
data[option].apply( data, args );
}
else if ( options.show ) {
data.show.apply( data, args );
}
});
}, $.fn.modal);
我不明白为什么在这种情况下使用 $.extend - 它有什么我看不到的效果吗?如果我执行这段代码:
var f1 = function(){console.log(1);};
var f2 = function(){console.log(2);};
var f2 = $.extend(f1,f2);
f2();
那么只有 1 被打印到控制台,并且 f1 等于 f2。所以看起来很简单的assingnment就可以了,
$.fn.modal = function(option) {...}
但也许我错过了什么......
【问题讨论】:
标签: jquery twitter-bootstrap extend