var originObj = {
name: "小明",
array:["666","777","888"],
object:{
name:"lgq",
prop:["good","beautiful","cool"],
obj:{O
age:"18",
sex:"boy"
}
}
}
var targetObj = {};
/**
* 浅克隆
*/
function clone(origin,target){
var target = target || {};//target若不定义,默认为空{}
for(var prop in origin){//枚举原始对象属性(数组同样适用只是数组的prop为下标0、1、2...)
if(origin.hasOwnProperty(prop)){//判断属性是否是其本身的属性 返回true或false(为的是过滤其原型链上的属性)
target[prop] = origin[prop]//原始对象属性clone至目标对象
}
}
return target;
}
/**
* 深克隆
*/
function deepClone(origin,target){
var target = target || {},//target若不定义,默认为空{}
toStr = Object.prototype.toString,//判断值是数组还是对象的方法
isObj = "[Object Object]";
for(var prop in origin){//枚举原始对象属性(数组同样适用只是数组的prop为下标0、1、2...)
if(origin.hasOwnProperty(prop)){//判断属性是否是其本身的属性 返回true或false(为的是过滤其原型链上的属性)
if(origin[prop] !== "null" && typeof(origin[prop]) == "object"){
target[prop] = toStr.call(origin[prop]) == isObj ? {} : [];//判断值是否为对象,以此赋值
deepClone(origin[prop],target[prop])// 递归再次判断执行
}else{
target[prop] = origin[prop] //原始对象属性clone至目标对象
}
}
}
return target;
}
原文:https://www.cnblogs.com/arvin-LGQ/p/11319537.html