// 淺拷貝
var json1 = {
name: 'aaa',
age: 25,
data: {
a: 1,
b: 2
}
};
function copy(parent, child) {
var child = child || {};
for(var i in parent) {
child[i] = parent[i];
}
return child;
}
var json2 = copy(json1);
json2.data.a = 3;
console.log(json1.data.a);// json1.data.a受影響也變成3了
console.log(json2.data.a);
// 深拷貝:利用遞歸
var json1 = {
name: 'aaa',
age: 25,
data: {
a: 1,
b: 2
}
};
function deepCopy(parent, child) {
var child = child || {};// 并不是直接聲明一個(gè)新child為空{(diào)}搭儒,傳過(guò)來(lái)的就用傳過(guò)來(lái)的
for(var i in parent) {
if(typeof parent[i] === 'object') {
child[i] = (parent[i].constructor === Array) ? [] : {};// child.data = {};
deepCopy(parent[i], child[i]);// {a: 1,b: 2}备图,傳過(guò)去的是child.data的空json
}
else {
child[i] = parent[i];// child.data.a ...
}
}
return child;
}
var json2 = deepCopy(json1);
json2.data.a = 3;
console.log(json1.data.a);// json1.data.a不受影響,仍舊是1
console.log(json2.data.a);
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者