版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37504436/article/details/87782318
克隆:
var obj = {
name: 'abc',
age: '17',
sex: 'female'
}
var obj1 = {}
function clone(origin, target) {
for(var prop in origin) {
target[prop] = origin[prop]
}
}
clone(obj, obj1);
深度克隆:
遍历对象 for(var prop in obj)
- 判断是不是原始值 typeof() object
- 判断是数组还是对象 instanceof toString constructor
- 建立相对的数组或对象
递归
function deepClone(origin, target){
var target = target || {},
toStr = Object.prototype.toString,
arrStr = "[object Array]";
for(var prop in origin){
if(origin.hasOwnProperty(prop)){
if(origin[prop] !== 'null' && typeof(origin[prop]) == 'object'){
if(toStr.call(origin[prop]) == arrStr){
target[prop] = [];
}else{
target[prop] = {};
}
deepClone(origin[prop], target[prop]);
}else{
target[prop] = origin[prop];
}
}
}
return target;
}