jquery扩展和简单复制变量之间的区别

时间:2012-11-28 23:49:02

标签: jquery

我理解使用jquery扩展的优点但是跟随两个案例完全相似或者比其他案例更好,为什么?

obj1 = $.extend(true, {}, elements);

...

obj1 = elements;

更新 答案说明: 以下应该清除混乱

​obj = {"value":4};
obj_test = obj;
obj.value = 5
alert(obj_test.value);

2 个答案:

答案 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的影响将对另一个产生间歇性影响..