Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重新使用options变量作为jquery extend的输出_Javascript_Jquery - Fatal编程技术网

Javascript 重新使用options变量作为jquery extend的输出

Javascript 重新使用options变量作为jquery extend的输出,javascript,jquery,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

通常,当您使用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扩展文档,但找不到合适的方法。我想要这个只是愚蠢吗?即使是这样,我仍然很好奇如何以一种好的方式完成它。

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

var optionsAfterExtend = $.extend({}, defaultOptions, options);
如果还希望更改
选项
对象,并且对象相同,请创建一个新对象,然后将其扩展回
选项

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

如果执行
选项afterextend.data='sam'
options afterextend.data==options afterextend无法返回true,因为您正在检查属性的值是否与对象本身相同。更新问题,这是我问题的错误措辞。我也会尽量把问题弄清楚。很抱歉造成混淆,您是不是在问每次更改
options afterextend
时如何更新
options
?是的,我想让options和options afterextend指向同一个对象,所以基本上不用创建新对象,我想让extend将属性合并回原始选项对象。