手写浅拷贝
function shallowCopy(obj)
{
let objNew = new Object();
for(let item in obj)
{
objNew[item] = obj[item];
}
return objNew;
}
let obj = {
name: "a",
obj1: {
age : 1
},
fn : function(){
let a = "1";
console.log(a);
}
}
let copy = shallowCopy(obj);
copy.obj1 === obj.obj1; //true
copy.fn === obj.fn; //true
手写深拷贝
function deepCopy(obj)
{
let arr = Array.isArray(obj)? []:{};
for(let i in obj)
{
if(typeof obj[i] === "object" && (Boolean(obj[i])))
{
arr[i] = deepCopy(obj[i]);
}else if(typeof obj[i] === "function")
{
arr[i] = new Function("return " + obj[i].toString())();
}else{
arr[i] = obj[i];
}
}
return arr;
}
let obj = {
name: "a",
obj1: {
age : 1
},
fn : function(){
let a = "1";
console.log(a);
}
}
let copy = deepCopy(obj)
copy.obj1 === obj.obj1; //false
copy.fn === obj.fn; //false