Method One
Copy Code code as follows:
function Clone (obj) {
var o;
Switch (typeof obj) {
Case ' undefined ': break;
Case ' string ': o = obj + ';
Case ' number ': o = obj-0;break;
Case ' Boolean ': o = obj;break;
Case ' object ':
if (obj = = null) {
o = null;
}else{
if (obj instanceof Array) {
o = [];
for (var i = 0, len = obj.length i < len; i++) {
O.push (Clone (Obj[i]));
}
}else{
o = {};
For (var k in obj) {
O[K] = Clone (Obj[k]);
}
}
}
Break
Default
o = obj;break;
}
return o;
}
Method Two
Copy Code code as follows:
function Clone2 (obj) {
var o, obj;
if (Obj.constructor = = Object) {
o = new Obj.constructor ();
}else{
o = new Obj.constructor (obj.valueof ());
}
for (var key in obj) {
if (O[key]!= Obj[key]) {
if (typeof (Obj[key]) = = ' object ') {
O[key] = Clone2 (Obj[key]);
}else{
O[key] = Obj[key];
}
}
}
o.tostring = obj.tostring;
o.valueof = obj.valueof;
return o;
}
Method Three
Copy Code code as follows:
function Clone3 (obj) {
function Clone () {}
Clone.prototype = obj;
var o = new Clone ();
For (Var a in O) {
if (typeof o[a] = = "Object") {
O[a] = Clone3 (O[a]);
}
}
return o;
}