手寫代碼之深拷貝

`數組

/**
 * 深拷貝
 * @param {object} obj 要拷貝的對象
 */
function deepClone(obj={}){
    if(typeof obj!=='object' || obj == null){
        // obj是 null ,或者不是對象和數組,直接返回
        return obj;
    }

    // 初始化返回結果
    let result;
    if(obj instanceof Array){
        result=[];
    }else{
        result={};
    }

    for(let key in obj){
        //判讀key是否是這個對象所擁有的屬性,保證key不是原型的屬性
        if(obj.hasOwnProperty(key)){
            // 遞歸調用!!!
            result[key]= deepClone(obj[key]);
        }
    }

    return result;
}

`
出現循環引用的時候會報錯!!!
待完善。。。code

相關文章
相關標籤/搜索