对象,数组,字符串,数字,date的深复制浅复制问题
来源:互联网 发布:芙蓉云计算数据朱震风 编辑:程序博客网 时间:2024/04/30 10:33
// *******数组的深浅复制****************/// 浅复制,导致引用类型都改变console.log('浅复制,导致引用类型都改变');var array1 = ['red','yellow','blue']; var array2 = array1;console.log(array1); array2[0] = 'changed';console.log(array1); console.log(array2); // 深复制,不影响前者,concatconsole.log('深复制,不影响前者,concat');var array1 = ['red','yellow','blue']; var array2 = array1.concat('purple','purple2');var array3 = array2.concat(['purple3'],'purple4');var array4 = array3.concat();console.log(array1);console.log(array2);console.log(array3);console.log(array4);// 深复制,不影响前者,sliceconsole.log('深复制,不影响前者,slice');var array1 = ['red','yellow','blue']; var array2 = array1.slice(1);console.log(array1);console.log(array2);// *******对象且数组的深浅复制****************/console.log('百度ife-对象等的深浅复制'); // 使用递归来实现一个深度克隆,可以复制一个目标对象,返回一个完整拷贝// 被复制的对象类型会被限制为数字、字符串、布尔、日期、数组、Object对象。不会包含函数、正则对象等function cloneObject(src) { if ((src instanceof Object) && (!(src instanceof Array))) { var result = {}; for (var propName in src) { result[propName] = arguments.callee(src[propName]); } return result; } else if (src instanceof Array) { return src.concat(); } else { return src; }}// 测试用例:var srcObj = { a: 1, b: { b1: ["hello", "hi"], b2: "JavaScript" }};var abObj = srcObj;var tarObj = cloneObject(srcObj);srcObj.a = 2;srcObj.b.b1[0] = "Hello";srcObj.b.b1[2] = "Hello2";console.log(abObj.a); //2console.log(abObj.b.b1[0]); //Helloconsole.log(tarObj.a); // 1console.log(tarObj.b); // Object console.log(tarObj.b.b1[0]); // "hello"console.log(tarObj.b.b1[2]); // "undefined"// console.log("复制数组");var array1 = ['red','yellow','blue']; var array2 = cloneObject(array1);array2[0] = 'changed';console.log(array1); console.log(array2); // console.log("复制字符串");var x = 'sqf';var y = cloneObject(x);x = '222';console.log(x); console.log(y);
0 0
- 对象,数组,字符串,数字,date的深复制浅复制问题
- 动态数组类/对象的浅复制/对象深复制
- 数组对象的复制
- 数组的浅复制和深复制
- 字符串的深复制和浅复制
- 对象的浅复制与深复制
- 对象的深复制和浅复制
- java对象的复制,浅复制、深复制
- 对象和数组的复制
- js对象、数组深复制
- javascript 数组以及对象的深拷贝(复制数组或复制对象)的方法
- javascript 数组以及对象的深拷贝(复制数组或复制对象)的方法
- javascript 数组以及对象的深拷贝(复制数组或复制对象)的方法
- javascript 数组以及对象的深拷贝(复制数组或复制对象)的方法
- 关于数组的复制问题------浅拷贝,深拷贝
- 字符串数组的复制(不仅仅字符串)
- AS3 数组的浅复制与深复制
- iOS - 深复制浅复制和c数组的关系
- mysql replace
- 求1+2+...+n(不太理解)
- 如何将MBR分区转换为GPT分区
- 内核树的建立
- IOS,ANDROID,.NET通用AES加密算法
- 对象,数组,字符串,数字,date的深复制浅复制问题
- 设置BaseSDK和DeploymentTarget
- Xcode创建一个本地的Html
- JS数组方法汇总 ARRAY数组元素的添加和删除
- 三岁小孩吃后身亡,这东西太多了!吃它的禁忌你一定得知道!
- RevStrSort
- synchronized(class)、synchronized(this)与synchronized(object)的区别分析
- 基于AppDomain的"插件式"开发
- java HashMap