js中的深克隆

1. 通過JSON.stringify和JSON.parse實現:不能完全解決深層次對象的嵌套的克隆。

var newVal=JSON.parse(JSON.stringify(val))  

2.封裝一個函數: 通過遞歸遍歷,根據數組和對象不同做出不同的深克隆區分。

function deepCopy(obj){
    var newObj=isArray(obj)?[]:{}
    for(var key in obj){
        if(isObject(obj[key])){
            newObj[key]=deepCopy(obj[key])
        }else{
            newObj[key]=obj[key]
        }
    }
}

function isArray(val){
    retrun Object.prototype.toString.call(val) ==='[object Array]'
}

function isObject(val){
    retrun typeof val ==='object' && !val==null
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章