var settings = $.extend({}, defaults, options);
执行这段代码,将合并defaults和options,并保存在settings和空对象{}里,而defaults里面的内容不会受到更改。
options为空时
$('a.tooltip').tooltip();
开始时,defaults定义为:
var defaults = {background: '#e3e3e3', color: 'black', rounded: false}
而options是tooltip的一个变量参数,由用户自己定义。如果参数为空,那合并后的内容就跟defaults对象一样,此时:
var settings == {background: '#e3e3e3', color: 'black', rounded: false};
{} == {background: '#e3e3e3', color: 'black', rounded: false};
{} 为空对象
给options增加属性
$('a.tooltip').tooltip({rounded: true});
这个时候,options为:
options == {rounded: true}
合并defaults和options后,结果为:
var settings == {background: '#e3e3e3', color: 'black', rounded: true};
{} == {background: '#e3e3e3', color: 'black', rounded: true};
可以看到,合并后的内容,对于相同的属性,后面的属性值将替换掉前面的属性值。