天天看點

複制對象的值,處理後,原對象的值也會随着改變的解決辦法

對象的指派;僅僅是把新對象指向對象存儲的位址,并不是重新建立了一個對象,是以改變對象的值時,所有指向該對象位址的對象的值都會變。

解決辦法是,複制對象的值重新存儲,提供一個好用的方法。

複制對象的數值方法
function clone(obj)
{
    var o,i,j,k;
    if(typeof(obj)!="object" || obj===null)return obj;
    if(obj instanceof(Array))
    {
        o=[];
        i=0;j=obj.length;
        for(;i<j;i++)
        {
            if(typeof(obj[i])=="object" && obj[i]!=null)
            {
                o[i]=arguments.callee(obj[i]);
            }
            else
            {
                o[i]=obj[i];
            }
        }
    }
    else
    {
        o={};
        for(i in obj)
        {
            if(typeof(obj[i])=="object" && obj[i]!=null)
            {
                o[i]=arguments.callee(obj[i]);
            }
            else
            {
                o[i]=obj[i];
            }
        }
    }
    return o;
}