[英]Replace one object's properties with the properties of another?
首先,我不是說將一個對象深深地克隆到另一個對象。
我有一個對象:
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
你可以使用這個功能:
function replaceProperties(dest, src) {
for (var i in dest)
delete dest[i];
for (var i in src)
dest[i] = src[i];
}
代碼很明顯,看起來像你想做的。 它並沒有像你說的那樣“打破參考”。
雖然當屬性不可枚舉或原型時它可能不會做你想要的......
如果您不必支持IE10,之前使用__proto__
或setPrototypeof
,則可以在更改src
屬性時進行dest
更新:
function replaceProperties(dest, src) {
for (var i in dest)
delete dest[i];
Object.setPrototypeOf(dest, src);
}
嘗試:
Object.extend(data1,data2);
使用jQuery.extend()
對於深層副本: var object = $.extend({}, object1, object2);
更多信息http://api.jquery.com/jQuery.extend/#jQuery-extend-target-object1-objectN
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.