如何深拷贝

2019-04-18  本文已影响0人  不爱举铁的伪文青不是好前端

前几天阿里电话面的时候有问到如何进行深拷贝
这里总结一下

function JSONClone(obj){
  if(!(obj instanceof Object)){
    return obj
  }else{
    var obj2
    var str = JSON.stringify(obj)
    var obj2 = JSON.parse(str)
    }
  return obj2
}

var dem = JSONClone({a:2,c:3,v:{x:4}})
console.log(dem)

弊端是JSON不支持undefined,函数,引用,环....

 function clone(object){
     var object2
     if(! (object instanceof Object) ){
         return object
     }else if(object instanceof Array){
         object2 = []
     }else if(object instanceof Function){
         object2 = eval(object.toString())
     }else if(object instanceof Object){
         object2 = {}
     }
     for(let key in object){
         object2[key] = clone(object[key])
     }
     return object2
 }

var fun = clone(()=>{console.log(1)})
fun()  //1

这里并没有考虑到环的情况

上一篇 下一篇

猜你喜欢

热点阅读