浅拷贝的结果是两个引用指向同一个对象,即同一片内存区域。
浅拷贝
1 | var Ethan = {name: 'xia.weihua', height: '177cm', girlfriend: {name: 'leftHand'}}; // Just a joke, never mind. |
1 | { name: 'xia.weihua', |
深拷贝
深拷贝的结果是两个引用指向不同对象,即不同内存区域。实现深拷贝需要递归1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23var Ethan = {name: 'xia.weihua', height: '177cm', girlfriend: {name: 'leftHand'}};
var Jack;
function deepCopy(obj) {
var temp = obj.constructor === Array ? [] : {};
if (typeof obj !== 'object') {
return obj;
} else {
for (var i in obj) {
temp[i] = deepCopy(obj[i]);
}
}
return temp;
}
Jack = deepCopy(Ethan);
Jack.name = 'Jack Neo';
Jack.height = '165cm';
Jack.girlfriend.name = 'rightHand';
console.log(Ethan);
console.log(Jack);
1 | { name: 'xia.weihua', |
版权声明:本文为博主原创文章,转载时注明,谢谢。