//自定义深度复制对象or数组的递归方法----------------------------------------
let copyObjOrArr = o => {
let isArray = o instanceof Array;
let isObject = o instanceof Object;
if (!isObject) return o;
let n = (isArray ? [] : {});
for (let k in o) n[k] = copyObjOrArr(o[k]);
return n;
}
//测试----------------------------------------
var obj={a:1};
var arr=[1,2,3];
var obj_new =copyObjOrArr(obj);
var arr_new =copyObjOrArr(arr);
console.log(obj_new);
console.log(arr_new);
如上图所示这样复制对象or数组就不会产生指针变量那种修改的情况了
BUT!
我依然觉得上面的代码肽冗余,本质上我们只要复制了内容,并且保证变量指向的内存地址也发生改变就可以了
此刻,我想起了JSON.parse(JSON.stringify( objectOrArray )),这个把对象转为字符串再反转为对象的过程,就可以完成一次内存地址变更,于是有了代码