首先,我不是说要将一个对象深度克隆到另一个对象。
我有一个对象:
var data1 = {
p1: values1,
p2: values2,
.....
};
value1和value2可以是任何数据类型,例如对象或数组。
我有另一个对象:
var data2 = {
p3: values3,
p4: values4,
.....
};
value3和value4可以是任何数据类型,比如对象或数组。
现在我想将所有data2的属性克隆到data1中。
我想这么做的原因是data1被引用了,在data1的属性被更改后我不想破坏这个引用。
如果我像下面这样做:
data1 = clone(data2)
我会打破该引用。
更新: 什么是打破引用的意思:
var data1 = {
p1: value1
};
var data2 = {
p2: vale2
};
var ref = data1;
如果我执行:
data1 = clone(data2);
现在,ref仍然指向旧的data1数据,其值仍为:
{
p1: value1
}
但我希望ref成为data2
data2
的所有属性浅复制到data1
中,覆盖data1
已有的同名属性?用一个简单的for..in
循环不是很容易实现吗? - nnnnnn