重新使用options变量作为jquery扩展的输出

时间:2013-03-19 13:46:37

标签: javascript jquery

通常,当您使用defaultOptions扩展选项时,您将创建一个新对象,但我想重新使用options对象。见下面的代码。

我基本上想要做以下事情:

var defaultOptions = {'width': '10px', 'size': '10px'};

var options = {'width': '300px', 'name': 'sam'};

// I want to re-use the same options variable as target for extend
var optionsAfterExtend = $.extend(options, defaultOptions, options);

// should return true
alert(options.width == '300px');
alert(optionsAfterExtend == '300px');
alert(options.size == '10px');
alert(optionsAfterExtend == options);

// Because I may add extra info to the options object which the client using my plugin can use / re-use
optionsAfterExtend.data = 'sam';

// So now optionsAfterExtend.data and options.data should both equal 'sam'

尝试搜索很长时间并阅读jquery扩展文档,但找不到合适的方法。我想要这个只是愚蠢吗?即便如此,我仍然很好奇如何以一种很好的方式做到这一点。

1 个答案:

答案 0 :(得分:3)

extend方法将所有属性复制到您作为第一个参数发送的对象中。要创建一个由其他对象组合的新对象,请提供一个空对象作为第一个参数:

var optionsAfterExtend = $.extend({}, defaultOptions, options);

如果您还希望更改options对象,并且对象相同,请创建一个新对象,然后将其扩展回options

var o = $.extend({}, defaultOptions, options);
var optionsAfterExtend = $.extend(options, o);