深拷贝和浅拷贝

深拷贝和浅拷贝

浅拷贝

浅拷贝只能拷贝最外面一层
更深级别的对象只能拷贝地址,更改拷贝的新对象时也会改变被拷贝的对象

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;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值