使用jQuery.extend将自定义对象作为属性的意外行为

时间:2015-03-31 09:33:46

标签: javascript jquery

我使用jQuery(1.11.2)和$ .extend来克隆一个对象。这不能按预期工作。

我有一个包含两个属性的源对象,其中函数的自定义实例(新函数...)作为值。这些值似乎被复制为引用,我希望它们被复制为值。请参阅下面的代码。

var AnyObj = function(){
  this.attribute = "anyAttribute";
};

var target = {
  a: new AnyObj(),
  b: new AnyObj()
}
//this prints "anyAttribute"
console.log(target.a)
//now I create a deep copy
var copy = $.extend(true, {},target);
//and I change the attribute of the COPY(!!!)
copy.a.attribute = "YAYA";
//this prints an object with  the value YAYA
console.log(copy.a)
//this should NOT print  an object with  the value YAYA
console.log(target.a)

1 个答案:

答案 0 :(得分:0)

这似乎是一个jQuery extend()错误。有关详细信息,请参阅以下内容 http://bugs.jquery.com/ticket/10014