zoukankan      html  css  js  c++  java
  • 【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,这样一个字段一个字段的赋值。比较麻烦。

  • 相关阅读:
    String to Integer (atoi)
    Reverse Integer
    ZigZag Conversion
    01-GIT
    04-Eclipse操作SVN
    03-客户端访问SVN服务器
    02-Subversion安装与配置
    01-SVN概述
    09-Spring整合之SSH
    08-Spring的事务管理
  • 原文地址:https://www.cnblogs.com/tigerhsu/p/11460073.html
Copyright © 2011-2022 走看看