js 基礎加固之深拷貝

shijf發表於2021-03-04

js 深拷貝方法

/**
 * js 深拷貝方法
 * @param target 目標物件
 * @param source 源物件
 */
function deepCopy(target, source) {
    // 通過遍歷拿到source中多有的屬性
    for (let key in source){
        // 2. 去除當前遍歷到的屬性對應的取值
        let sourceValue = source[key]

        // 3. 判斷西啊是否是基礎資料型別
        if (sourceValue instanceof Object) {
            console.log(sourceValue)
            // 新建一個需要進一步深拷貝的建構函式(一開思考沒有加這個)
            let subTarget = new sourceValue.constructor;
            target[key] = subTarget
            deepCopy(subTarget, sourceValue)
        } else {
            target[key] = sourceValue
        }

    }
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結
支付寶領個紅包就是對我最大的讚賞了

相關文章