标签:deepcopy div 变化 else copy ons col ldo 方法
// 深拷贝拷贝多层, 每一级别的数据都会拷贝. var obj = { id: 1, name: ‘andy‘, msg: { age: 18 }, color: [‘pink‘, ‘red‘] }; var o = {}; // 封装函数 function deepCopy(newobj, oldobj) { for (var k in oldobj) { // 判断我们的属性值属于那种数据类型 // 1. 获取属性值 oldobj[k] var item = oldobj[k]; // 2. 判断这个值是否是数组 // 数组也属于对象Object,必须先判断是否是数组 if (item instanceof Array) { newobj[k] = []; deepCopy(newobj[k], item) } else if (item instanceof Object) { // 3. 判断这个值是否是对象 newobj[k] = {}; deepCopy(newobj[k], item) } else { // 4. 属于简单数据类型 newobj[k] = item; } } } deepCopy(o, obj); console.log(o); var arr = []; console.log(arr instanceof Object); // 数组属于对象 // 修改原来的对象,对拷贝的对象不会有影响 o.msg.age = 20; console.log(obj);
// 浅拷贝只是拷贝一层, 更深层次对象级别的只拷贝引用. // 深拷贝拷贝多层, 每一级别的数据都会拷贝. var obj = { id: 1, name: ‘andy‘, msg: { age: 18 } }; var o = {}; // for (var k in obj) { // // k 是属性名 obj[k] 属性值 // o[k] = obj[k]; // } // console.log(o); // o.msg.age = 20; // console.log(obj); console.log(‘--------------‘); Object.assign(o, obj); // 实现浅拷贝 console.log(o); o.msg.age = 20; // 对原数据修改之后,拷贝的也会发生变化 console.log(obj);
// es6 新增方法实现浅拷贝 Object.assign(o, obj);
标签:deepcopy div 变化 else copy ons col ldo 方法
原文地址:https://www.cnblogs.com/ccv2/p/13192361.html