//javascript 深度克隆
var obj1 = {
name:"xiaozhang",
age:12,
arr:[1,2,3],
student:{
class:2
},
m:null,
ud:undefined,
ff:function(){
return 2
}
}
var obj2 = {};
function cloned(origin,target){
var target = target||{};
var toS = Object.prototype.toString;
var typed1 = "[object Array]";
var typed2 = "[object Object]";
var typed3 = "[object Null]";
for(var x in origin){
if(origin.hasOwnProperty(x)){
if(typeof(origin[x])=="object"){
if(toS.call(origin[x])===typed1){
//var arr = [];
target[x] = [];
cloned(origin[x],target[x]);
}
if(toS.call(origin[x])===typed2){
//var obj = {};
target[x] = {};
cloned(origin[x],target[x]);
}
if(toS.call(origin[x])===typed3){
//var obj = {};
target[x] = null;
}
}else{
target[x] = origin[x];
}
}
}
return target;
}
cloned(obj1,obj2);
var obj1 = {
name:"xiaozhang",
age:12,
arr:[1,2,3],
student:{
class:2
},
m:null,
ud:undefined,
ff:function(){
return 2
}
}
var obj2 = {};
function cloned(origin,target){
var target = target||{};
var toS = Object.prototype.toString;
var typed1 = "[object Array]";
var typed2 = "[object Object]";
var typed3 = "[object Null]";
for(var x in origin){
if(origin.hasOwnProperty(x)){
if(typeof(origin[x])=="object"){
if(toS.call(origin[x])===typed1){
//var arr = [];
target[x] = [];
cloned(origin[x],target[x]);
}
if(toS.call(origin[x])===typed2){
//var obj = {};
target[x] = {};
cloned(origin[x],target[x]);
}
if(toS.call(origin[x])===typed3){
//var obj = {};
target[x] = null;
}
}else{
target[x] = origin[x];
}
}
}
return target;
}
cloned(obj1,obj2);