深拷贝

方法一: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 (Object.prototype.hasOwnProperty.call(obj, key)) {
          if(typeof obj[key] ==='object') {
            result[key] = deepCopy(obj[key]);  //递归复制
          } else {
            result[key] = obj[key];
          }
        }
      }
      return result;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容