1. 程式人生 > >深拷貝實現的方法

深拷貝實現的方法

array lse ray deep 復制 === else 元素 turn

1.通過遞歸去賦值所有層級屬性

function deepClone(obj){
    let objClone = Array.isArray(obj)?[]:{};
    if(obj && typeof obj==="object"){
        for(key in obj){
            if(obj.hasOwnProperty(key)){
                //判斷ojb子元素是否為對象,如果是,遞歸復制
                if(obj[key]&&typeof obj[key] ==="object"){
                    objClone[key] 
= deepClone(obj[key]); }else{ //如果不是,簡單復制 objClone[key] = obj[key]; } } } } return objClone; } let a=[1,2,3,4], b=deepClone(a); a[0]=2; console.log(a,b);

2.通過借用JSON的parse和stringify方法

function deepClone(obj){
    let _obj = JSON.stringify(obj),
        objClone = JSON.parse(_obj);
    return objClone
}    

3.通過JQuery的$.extend方法

$.extend( [deep ], target, object1 [, objectN ] )

深拷貝實現的方法