Tom*_*han 3 javascript jquery extend
我在使用jQuery扩展javascript对象时偶然发现了一个小问题.执行时
var item = $.extend(options.itemDefaults, item);
Run Code Online (Sandbox Code Playgroud)
options.itemDefaults使用已经存在的属性进行扩展,item并将结果传递给item.到现在为止还挺好.
但是下次执行此行时,将options.itemDefaults具有所有属性值item,而不是原始默认值.我的默认设置丢失了!
我意识到我可以简单地将默认对象存储在一个临时变量中,而是扩展临时变量,但它似乎有点冗长.有没有办法做我正在做的事情(用提供的覆盖默认值,在没有提供值时采用默认值,但不更改默认对象)没有绕道而行?
更新:似乎这并不像我希望的那样容易.当我做
var defaults = options.itemDefaults;
var $item = $.extend(defaults, { attributeModel: options.attributeModel }, item);
defaults = undefined
Run Code Online (Sandbox Code Playgroud)
在每次迭代中,我还是从添加属性item上options.itemDefaults!我该如何解决这个问题?
Anu*_*rag 10
尝试,
var item = $.extend(true, {}, options.itemDefaults, item);
Run Code Online (Sandbox Code Playgroud)
我们使用空对象{}作为目标,因此默认值不会被篡改.
属性options.itemDefaults,item并将被复制到空对象中.