var defaults = { foreground: 'red', background: 'blue' };
var options= { foreground: 'green', background: 'green' };
var opts = $.extend(defaults, options),和 var opts = $.extend({},defaults, options);有什么区别?
var options= { foreground: 'green', background: 'green' };
var opts = $.extend(defaults, options),和 var opts = $.extend({},defaults, options);有什么区别?
示例
合并 settings 和 options,修改并返回 settings。 jQuery 代码:var settings = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
jQuery.extend(settings, options);
结果:settings == { validate: true, limit: 5, name: "bar" }
--------------------------------------------------------------------------------合并 defaults 和 options, 不修改 defaults。 jQuery 代码:var empty = {}
var defaults = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
var settings = jQuery.extend(empty, defaults, options);
结果:settings == { validate: true, limit: 5, name: "bar" }
empty == { validate: true, limit: 5, name: "bar" } 第一个参数原始值会被修改
结果:defaults== {foreground:'green',background:'green'};
第二种合并defaults和options,不修改defaults
结果:opts= { foreground: 'green', background: 'green' };
第一种会修改参数一defaults的值
第二种则是把参数二和参数三的值和到一处,赋值给参数一
并且参数二中没有参数三的数据,会被填充到参数一,如果有的值不同的会改变值