在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ 深復(fù)制與淺復(fù)制

深復(fù)制與淺復(fù)制

哪位大神可以簡(jiǎn)潔明了的說(shuō)說(shuō)深復(fù)制與淺復(fù)制呀?最好有個(gè)小例子。感激不盡。

回答
編輯回答
涼薄

您可以參考下該文章:javascript中的深拷貝和淺拷貝?

2017年5月2日 02:14
編輯回答
怣人

深復(fù)制和淺復(fù)制只針對(duì)像 Object, Array 這樣的復(fù)雜對(duì)象的。簡(jiǎn)單來(lái)說(shuō),淺復(fù)制只復(fù)制一層對(duì)象的屬性,而深復(fù)制則遞歸復(fù)制了所有層級(jí)。
這是我們之前深拷貝封裝的函數(shù),代碼如下,淺拷貝就沒(méi)必要再貼出來(lái)吧

function clone(obj) {
/// <summary>
/// 把對(duì)象復(fù)制,返回
/// </summary>
/// <param name="obj" type="object">源對(duì)象</param>
var o;
switch(typeof obj){
    case 'undefined': break;
    case 'string'   : o = obj + '';break;
    case 'number'   : o = obj - 0;break;
    case 'boolean'  : o = obj;break;

    case 'object'   :

        if(obj === null){
            o = null;
        }else{
            if(obj instanceof Array){

                o=[];
                //o= obj.slice(0), 注意了這里不能直接使用這個(gè)復(fù)制,如果數(shù)組中的元素為對(duì)象,復(fù)制是不成功的
                for(var i=0;i<obj.length;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;
}
2017年7月11日 22:25