1深克隆
<script type="text/javascript">
var obj={
name:"abc",
age:123,
card:[' visa','master'],
wife:{
name:"bcd",
son:{
name:"aaa"
}
}
}
var obj1={};
//深克隆
// 遍历对象 for( var prop in obj)
//1.判断是不是原始值 typeof() object
//2.判断是数组还是对象 instanceof constructor toString//--推荐使用:toString
//3.建立相应的数组或对象
//递归
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]={};
}
//递归copy每个数组或对象中的值
deepClone(origin[prop],target[prop]);
}else{
target[prop] = origin[prop];
}
}
}
return target;
}
</script>
2浅克隆
<script type="text/javascript">
var obj={
name:"abc",
age:123,
card:[' visa','master'],
wife:{
name:"bcd",
son:{
name:"aaa"
}
}
}
var obj1={};
function clone(origin,target){
var target = target || {};
for(var prop in origin){
if(origin.hasOwnProperty(prop)){//判断是否是直系属性
target[prop] = origin[prop];
}
}
return target;
}
</script>
版权声明:本文为qq_39396275原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。