//深度拷贝
//考虑引用值
var obj={
name:"abc",
age:123,
sex:"F"
card:['visa','[1,2]']
}
var obj1={
}
//遍历对象
function deepClone(target, origin) {
var target=target||{};
//容错处理以防如果外部没有传入的空对象,就自己创建一个新的空对象{},
//若有的话就把旧target对象传给新创建的target
var objStr = '[object Object]';
var arrStr = '[object Array]';
if (origin !== 'null') {
for (var prop in origin) {
if (origin.hasOwnProperty(prop)){
if (typeof(origin[prop]) == 'object') {
console.log("aa");
if (Array.prototype.toString.call(origin[prop]) == objStr) {
target[prop] = {};
} else {
target[prop] = [];
}
deepClone(target[prop], origin[prop]);
} else {
target[prop] = origin[prop];
}
}
}
}
return target;//如果外部调用函数没有穿target复制对象情况,就返回一个复制好的对象
}
//判断是否是自己的对象
//1.判断是否是原始值 typeof object
//2.判断是数组还是对象 instanceof tostring() constructor
//3.建立相应的数组对象
function deepClone(origin,target){
var target=target||{};
var toStr=Object.prototype.toString;
var objStr="[object Object]";
var arrStr="[object Array]";
for(var prop in origin){
if(origin.hasOwnProperty(prop)){
if(original[prop]!=='null '&& typeof(origin[prop])=='object'){
if(toStr.call(origin[prop]==arrStr)){
target[prop]=[];//给target的prop属性建立数组对象
}else{
target[prop]={};
}
deepClone(origin[prop],target[prop]);
}else{
target[prop]=origin[prop];
}
}
}
return target;
}