在使用 jQuery 扩展 javascript 对象时,我偶然发现了一个小问题。执行时
var item = $.extend(options.itemDefaults, item);
options.itemDefaults
使用已经存在的属性进行扩展,item
并将结果传递给item
. 到现在为止还挺好。
但是下次执行此行时,options.itemDefaults
将具有所有属性值item
,而不是原始默认值。我的默认值丢失了!
我意识到我可以简单地将默认对象存储在临时变量中,然后扩展临时变量,但这似乎有点冗长。有没有办法做我所追求的(用提供的值覆盖默认值,在没有提供值时采用默认值,但不更改默认对象)而无需绕道?
更新:这似乎不像我希望的那样容易解决。当我做
var defaults = options.itemDefaults;
var $item = $.extend(defaults, { attributeModel: options.attributeModel }, item);
defaults = undefined
在每次迭代中,我仍然item
从on添加属性options.itemDefaults
!我该如何解决这个问题?