美文网首页
对象的深复制和浅复制.

对象的深复制和浅复制.

作者: 雪萌萌萌 | 来源:发表于2017-03-28 22:42 被阅读0次

layout: post
title: "对象的浅复制和深复制"
date: 2017-03-28
categories: js


对象的深复制和浅复制.
浅度克隆:原始类型为值传递,对象类型仍为引用传递。
深度克隆:所有元素或属性均完全复制,与原对象完全脱离,也就是说所有对于新对象的修改都不会反映到原对象中

var a={name:'yy',age:26};
var b=new Object();

深复制
1.将对象下属性的值取出来赋给要复制的对象下的属性

b.name=a.name;
b.age=a.age;
a.name='xx';
console.log(b);//Object { name="yy", age=26}
console.log(a);//Object { name="xx", age=26} 

2.采用递归的方式

function deepClone(obj){
    var result={},
oClass=isClass(obj);isClass判断对象的什么类型   
 for(key in obj){
        var copy=obj[key];
        if(isClass(copy)=="Object"){
            result[key]=arguments.callee(copy);
        }else if(isClass(copy)=="Array"){
            result[key]=arguments.callee(copy);
        }else{
            result[key]=obj[key];
        }
    }
    return result;
}

简化的递归函数

Object.prototype.clone=function(){
 var o=(this.contructor===Array?[]:{});
for(var e in this){
o[e]=typeof this[e]==='object'?this[e].clone():this[e]
}
return o;
}

3.用JSON

     var str1=JSON.stringify(obj1);
    var obj2=JSON.parse(str1);

将对象先转换为字符串,再将字符串转换为数组

浅复制

b=a;
a.name='xx';
console.log(b);//Object { name="xx", age=26}
console.log(a);//Object { name="xx", age=26}

相关文章

  • java 对象的拷贝

    拷贝:即复制 对象拷贝:即对象复制 java 对象拷贝分类:浅拷贝、深拷贝 java 对象的浅拷贝和深拷贝针对包含...

  • 浅拷贝与深拷贝NSMutableCopy、NScopy

    1.浅拷贝和深拷贝的区别 浅拷贝只是复制对象本身,对象属性包含的对象不复制,不产生新对象,直接指向原有对象。 深拷...

  • iOS全解11:特殊问题

    1、浅拷贝和深拷贝的区别? 浅拷贝:只复制指向对象的指针,指针指向同一个地址,而不复制引用对象本身。深拷贝:复制引...

  • 深拷贝

    ?深拷贝和浅拷贝的区别 ? 1.浅拷贝:只复制指向某个对象的指针,而不复制对象本身,新旧对象共享一块内存(只复制引...

  • 深拷贝与浅拷贝的理解及常用方法

    深拷贝和浅拷贝的区别 首先深复制和浅复制只针对像 Object, Array 这样的复杂对象的。简单来说,浅复制只...

  • 前端笔记(二) 对象的深浅拷贝,函数的防抖与节流,函数柯里化 ,

    对象的深浅拷贝 对象的深拷贝与浅拷贝的区别: 浅拷贝:仅仅复制对象的引用, 而不是对象本身。 深拷贝:把复制的对象...

  • 浅拷贝和深拷贝

    浅拷贝和深拷贝都是只针对Object,Array这样的复杂对象。浅拷贝只复制一层对象的属性,而深拷贝则是递归复制了...

  • 深拷贝和浅拷贝

    什么是深拷贝和浅拷贝 浅拷贝是复制了一个对象的指针,而不是复制对象的内存,新对象和原对象还是同一块内存.而深拷贝会...

  • 浅拷贝与深拷贝

    一 、基本概念 1.1 深拷贝 与 浅拷贝 对象拷贝有两种方式:浅复制和深复制。顾名思义,浅复制,并不拷贝对象本身...

  • objective深浅拷贝

    浅复制和深复制的区别? 浅复制:只复制指向对象的指针,而不复制引用对象本身。 深复制:复制引用对象本身。 意思就是...

网友评论

      本文标题:对象的深复制和浅复制.

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