【JS】JS深拷贝

部分转自:https://www.cnblogs.com/renbo/p/9563050.html

方式1:

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

方式2:

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

另外一种情形:

在将JS中某个类ClassA的对象序列化转换成JSON之后,想将JSON对象(JS中除了String等基本类型其他都是Object)转换成该类ClassA的对象(这样就可以调用ClassA中的方法了),需要逐个字段的赋值。

如在类ClassA中增加一个方法setObject(obj),在该方法中this.a=obj.a,这样一个字段一个字段的赋值。比较麻烦。

猜你喜欢

转载自www.cnblogs.com/tigerhsu/p/11460073.html