深拷贝

2019-07-19  本文已影响0人  Nkero

方法一:JSON.stringfy()和JSON.parse()

var syb = Symbol('obj');
var person = {
   name :'tino',
   say: function(){
      console.log('hi');
   },
   ok: syb,
   un: undefined
}
var copy = JSON.parse(JSON.stringify(person))

缺点为:当值为undefined、function、symbol时会导致属性丢失。

方法二:

function deepCopy(obj) {
      var result = Array.isArray(obj) ? [] : {};
      for(var key in obj) {
        if (obj.hasOwnProperty(key)) {
          if(typeof obj[key] ==='object') {
            result[key] = deepCopy(obj[key]);  //递归复制
          } else {
            result[key] = obj[key];
          }
        }
      }
      return result;
}
上一篇 下一篇

猜你喜欢

热点阅读