美文网首页
JavaScript 对象深浅拷贝

JavaScript 对象深浅拷贝

作者: 糖葱薄饼煎的蛋 | 来源:发表于2017-04-03 00:36 被阅读0次

    浅拷贝:

    var obj = {
                name:'wsscat',
                age:0
            }
    var obj2 = obj;
    obj2['c'] = 5;
    console.log(obj);//Object {name: "wsscat", age: 0, c: 5}
    console.log(obj2);////Object {name: "wsscat", age: 0, c: 5}
    

    深拷贝:

    Object.prototype.deepCopy=function(){
        var obj=null;//用于最后返回一个对象,这个对象是深复制的结果
        for(var attr in this){//遍历这个对象的每一个属性
            if(this.hasOwnProperty(attr)){//主要是递归自有属性
                if(typeof (this[attr]==='object')){//如果对象的属性是一个对象,就递归复制它的每一个属性
                    if(this[attr]===null){//如果对象为null
                        obj[attr]=null;
                    }else if(Object.prototype.toString(this[attr])==='[object Array]'){//如果是个数组
                        obj[attr]=[];
                        for(var i=0;i<this[attr].length;i++){
                            obj[attr].push(this[attr][i].deepCopy());
                        }
                    }else{//object
                        obj[attr]=this[attr].deepCopy();
                    }
                }else{
                    obj[attr]=this[attr];
                }
            }
        }
        return obj;
    }
    

    相关文章

      网友评论

          本文标题:JavaScript 对象深浅拷贝

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