鍍金池/ 問答/HTML/ 深復制與淺復制

深復制與淺復制

哪位大神可以簡潔明了的說說深復制與淺復制呀?最好有個小例子。感激不盡。

回答
編輯回答
涼薄

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

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

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

function clone(obj) {
/// <summary>
/// 把對象復制,返回
/// </summary>
/// <param name="obj" type="object">源對象</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), 注意了這里不能直接使用這個復制,如果數(shù)組中的元素為對象,復制是不成功的
                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