浅拷贝1
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
//拷贝/复制/克隆 clone
var person1 = {
name: '张三',
age: 18,
sex: 'male',
height: 180,
weight: 140,
son: {
first: 'Jenney',
second: 'Lucy',
Third: 'Jone'
},
arr: []
}
var person2 = {};
for(var key in person1){
person2[key] = person1[key];
}
person2.name = '李四';
person2.son.forth = 'Ben';
console.log(person1,person2);
</script>
</body>
</html>
浅拷贝2
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
//拷贝/复制/克隆 clone
var person1 = {
name: '张三',
age: 18,
sex: 'male',
height: 180,
weight: 140,
son: {
first: 'Jenney',
second: 'Lucy',
Third: 'Jone'
},
arr: []
}
var person2 = clone(person1);
person2.name = '李四';
person2.son.forth = 'Ben';
console.log(person1,person2);
function clone(origin, target){
var tar = target || {};
for(var key in origin){
if(origin.hasOwnProperty(key)){
tar[key] = origin[key];
}
}
return tar;
}
</script>
</body>
</html>
深拷贝
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
//拷贝/复制/克隆 clone
var person1 = {
name: '张三',
age: 18,
sex: 'male',
height: 180,
weight: 140,
children: {
first:{
name: '张小一',
age: 13
},
second:{
name: '张小二',
age: 7
},
third:{
name: '张小三',
age: 3
}
},
car: ['Benz', 'Mazda']
}
var person2 = deepClone(person1);
console.log(person2);
person2.name = '李四';
person2.children.forth = {
name: '张小四',
age: 1
};
console.log(person1,person2);
function deepClone(origin, target){
var target = target || {},
toStr = Object.prototype.toString,
arrType = '[object Array]';
for(var key in origin){
if(origin.hasOwnProperty(key)){
if(typeof(origin[key]) === 'object' && origin[key] !== null){
if(toStr.call(origin[key]) === arrType){
target[key] = [];
}else{
target[key] = {};
}
deepClone(origin[key], target[key]);
}else{
target[key] = origin[key];
}
}
}
return target;
}
</script>
</body>
</html>