我理解使用jquery扩展的优点但是跟随两个案例完全相似或者比其他案例更好,为什么?
obj1 = $.extend(true, {}, elements);
...
obj1 = elements;
更新 答案说明: 以下应该清除混乱
obj = {"value":4};
obj_test = obj;
obj.value = 5
alert(obj_test.value);
答案 0 :(得分:2)
在第二种情况下,您不“复制”对象,而是创建对它的第二个引用。
所以在第一种情况下,它是一个副本 - 存储在2个变量中的2个对象。
在第二个中 - 由2个变量引用的单个对象(不是副本)。
答案 1 :(得分:0)
第一种方法用于deep copy an Object
。
var elements = {
name : 'John',
age : 23
}
var obj1 = $.extend(true, {}, elements);
obj1.name = 'Bill';
console.log('Original : '+ elements.name);
console.log('Deep Copy : ' + obj1.name);
第二个是对象的copying over the reference
。
var obj2 = elements;
console.log('Original : '+ elements.name);
console.log('Reference Copy : ' + obj2.name);
<强> check Fiddle 强>
在第一种情况下,两个对象都指向不同的内存位置。因此,更改属性只会影响已更改的对象。
在第二种情况下,两者都指向相同的内存位置。因此对1的影响将对另一个产生间歇性影响..