浅拷贝封装:
var obj = {
name: 'zhangsan',
age: 18
}
var obj2 = clone(obj);
console.log(obj2); //{name: 'zhangsan', age: 18}
function clone(origin, target){
var target = target || {};
for(var key in origin){
if(origin.hasOwnProperty(key)){ //判断该属性是否为对象属性
target[key] = origin[key];
}
}
return target;
}
深拷贝封装:
var obj = {
name: "zhangsan",
age: 18,
son: {
name: "xiaozhang",
},
};
var obj2 = DeepClone(obj);
console.log(obj2); //{name: 'zhangsan', age: 18, son: {…}}
function DeepClone(origin, target) {
var target = target || {},
toStr = Object.prototype.toString,
arrType = "[object Array]";
for (var key in origin) {
if (origin.hasOwnProperty(key)) {
if (typeof origin[key] === "object" && origin[key] !== null) {
toStr.call(origin[key]) === arrType
? (target[key] = [])
: (target[key] = {});
DeepClone(origin[key], target[key]);
} else {
target[key] = origin[key];
}
}
}
return target;
}