Object.clone
=
function
(source)
{
if (source == null || ! source.constructor) return null ;
var dest;
switch (source.constructor.toString())
{
case Boolean.toString():
case Number.toString():
case String.toString():
dest = source;
break ;
case Date.toString():
dest = new Date(source);
break ;
case Object.toString():
dest = {};
for (p in source)
{
dest[p] = Object.clone(source[p]);
}
break ;
case Array.toString():
dest = [];
for ( var i = 0 ; i < source.length; i ++ )
{
dest[i] = Object.clone(source[i]);
}
break ;
case Function.toString():
eval( " try{var fun = " + source.toString() + " ; dest = fun;}catch(ex){dest = null;} " );
break ;
default :
dest = null ;
}
return dest;
}
Object.prototype.clone = function ()
{
return Object.clone.apply( this , [ this ]);
}
{
if (source == null || ! source.constructor) return null ;
var dest;
switch (source.constructor.toString())
{
case Boolean.toString():
case Number.toString():
case String.toString():
dest = source;
break ;
case Date.toString():
dest = new Date(source);
break ;
case Object.toString():
dest = {};
for (p in source)
{
dest[p] = Object.clone(source[p]);
}
break ;
case Array.toString():
dest = [];
for ( var i = 0 ; i < source.length; i ++ )
{
dest[i] = Object.clone(source[i]);
}
break ;
case Function.toString():
eval( " try{var fun = " + source.toString() + " ; dest = fun;}catch(ex){dest = null;} " );
break ;
default :
dest = null ;
}
return dest;
}
Object.prototype.clone = function ()
{
return Object.clone.apply( this , [ this ]);
}