深拷贝和浅拷贝
浅拷贝
浅拷贝只能拷贝最外面一层
更深级别的对象只能拷贝地址,更改拷贝的新对象时也会改变被拷贝的对象
var obj={
id: 1,
name: "andy",
msg: {
age: 18
}
}
var o ={};
for(var k in obj){
o[k]=obj[k]
}
console.log(o);
// o ={
// id: 1,
// name: "andy",
// msg: {
// age: 18
// }
// }
o.msg.age=2;//obj的msg.age也会改变
//另一个浅克隆的方法
Object.assign(新对象,旧对象)
//深拷贝
function deepCopy(newObj, oldObj) {
for (var key in oldObj) {
//判断属性值属于哪个数据类型
var item = oldObj[key];
if (item instanceof Array) {
//先写Arry是因为数组也属于Object
newObj[k] = [];
deepCopy(newObj[k], item);
} else if (item instanceof Object) {
newObj[k] = {};
deepCopy(newObj[k], item)
} else {
newObj[k] = item;
}
}
}
1504

被折叠的 条评论
为什么被折叠?



