【发布时间】:2015-01-25 06:31:13
【问题描述】:
首先我并不是说将一个对象深度克隆到另一个对象。
我有一个对象:
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循环不是那么容易吗? -
@AlexanderO'Mara 这不是那个问题的重复。
-
@FaridNouriNeshat 更新后我明白你的意思了,我改进了标题并指定了重新打开的问题。
标签: javascript clone