美文网首页
深拷贝与浅拷贝

深拷贝与浅拷贝

作者: 春木橙云 | 来源:发表于2017-06-26 10:55 被阅读16次

    概念

    基本类型的拷贝,都是深拷贝。即拷贝后的变量拥有独立性,改变值,不会对拷贝前的变量造成影响。

    var a=453;
    var b = a;
    console.log(a);//453
    console.log(b);//453
    a = 100;
    console.log(a);//100
    console.log(b);//453
    

    引用类型的拷贝,如果未做特殊处理,为浅拷贝。即拷贝的只是指针,拷贝前后带变得是相同的内容,改变其中一个的值,另一个的值也会随着改变。

    var obj = {
        name:'har',
        sth:{
            age:100
        }
    }
    var obj2 = obj;
    
    console.log(obj);//234234
    console.log(obj2);//234234
    obj.sth.age = 234234;
    console.log(obj);//234234
    console.log(obj2);//234234
    

    浅拷贝一个对象的方式如下:

    var obj = {
        name:'har',
        sth:{
            age:100
        }
    } 
    function shadowCopy(){
        var newObj = [];
        for(var key in obj){
            if(obj.hasOwnProperty(key)){
                newObj[key] = obj[key]
            }
        }
        return newObj;
    }
    

    如何深拷贝一个对象?

    function deepCopy(){
        var newObj = [];
        for(var key in obj){
            if(typeof(obj[key] === 'object')){
                newObj[key] = deepCopy(obj[key]);
            }else{
                newObj[key] = obj[key];
            }
        }
        return newObj;
    }

    相关文章

      网友评论

          本文标题:深拷贝与浅拷贝

          本文链接:https://www.haomeiwen.com/subject/muvdcxtx.html