深浅拷贝区别
浅拷贝:如果包含内嵌的对象或者数组不在复制副本
深拷贝:如果包含内嵌的对象或者数组也会复制副本
1.浅拷贝
<script>
var obj = {
name: "磨乐",
arr: ["飞棒,阿班"],
address: {
prov: "江西省",
city: "江西",
area: "成都"
},
age: "30",
score: null
};
//封装拷贝函数
function clone(obj) {
//声明一个空对象
var newobj = {}
//循环遍历传进来的对象
for (var key in obj) {
//声明的空对象强行赋值
newobj[key] = obj[key]
}
return newobj
};
var obj1 = clone(obj)
console.log(obj1);
</script>
2.深拷贝
<body>
<script>
var obj = {
name: "磨乐",
arr: ["飞棒,阿班"],
address: {
prov: "江西省",
city: "江西",
area: "成都"
},
age: "30",
score: null
};
function clone(obj) {
if (obj === null) {
return null
}
else
if (obj instanceof Array) {
var newArr = [];
newArr = obj.slice();
return newArr;
}
var newobj = {}
for (var key in obj) {
if (typeof obj[key] !== 'object') {
newobj[key] = obj[key]
} else {
newobj[key] = clone(obj[key])
}
}
return newobj
};
var obj1 = clone(obj)
console.log(obj1);
</script>
</body>