遞歸解決JS深拷貝問題

內容來源於掘金上的《JavaScript 設計模式核⼼原理與應⽤實踐》一書,但是內容是收費的所以放鏈接也是看不到的。就不給了。

function deepClone(obj) {
    // 如果是 值類型 或 null,則直接return
    if(typeof obj !== 'object' || obj === null) {
        return obj
    }
    
    // 定義結果對象
    let copy = {}
    
    // 如果對象是數組,則定義結果數組
    if(obj.constructor === Array) {
        copy = []
    }
    
    // 遍歷對象的key
    for(let key in obj) {
        // 如果key是對象的自有屬性
        if(obj.hasOwnProperty(key)) {
            // 遞歸調用深拷貝方法
            copy[key] = deepClone(obj[key])
        }
    }
    
    return copy
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章