zoukankan      html  css  js  c++  java
  • Object.assign()

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

    说明

    Object.assign()方法将所有可枚举属性的值从一个或多个源对象复制到目标对象,然后返回目标对象

    语法

       Object.assign(target,..sources);

    参数

       target:目标对象

      sources:源对象

    返回值

      target:目标对象

    例子:

    1.使用Object.assgin()进行浅克隆

      //创建源对象
        var source = {a:1};
        //创建目标对象
        var target = {};
        //使用Object.assign进行复制
        var copyObj = Object.assign(target,source);
        
        console.log("copyObj:"+JSON.stringify(copyObj));      //{a:1}
        console.log("target===copyObj:"+(copyObj==target));   //true

         从上面两个输出可以得到Object.assign方法的说明结论 。

           1.assign进行了对象复制

           2.返回对象既是目标对象

    2.使用Object.assgin()+JSON进行深克隆

         单纯使用Object.assgin()方法复制对象我们只能复制对象中的值属性,而对于对象中引用属性,我们只能复制其引用

        //创建源对象
        var source = {a:1,b:{c:2}};
        //创建目标对象
        var target = {};
        //使用Object.assign进行复制
        var copyObj = Object.assign(target,source);
        console.log("copyObj:"+JSON.stringify(copyObj));                //{"a":1,"b":{"c":2}}
        console.log("target.b===copyObj.b:"+(source.b==copyObj.b));     //true

           那么js该怎么实现深度克隆呢,我们可以使用JSON来实现  

     //创建源对象
        var source = {a:1,b:{c:2}};
        //创建目标对象
        var target = {};
        //使用Object.assign进行浅复制
        var copyObj = Object.assign(target,source);
        //将copyObj序列成JSON字符串
        var copyString = JSON.stringify(copyObj);
        //然后再将其JSON字符串转换为对象,这样深度克隆
        copyObj = eval('('+copyString+')');
        console.log("copyObj:"+JSON.stringify(copyObj));              //{"a":1,"b":{"c":2}}
        console.log("source.b===copyObj.b:"+(source.b==copyObj.b));   //false

          上面我们可以看出实现方式是将其转化为JSON字符串,然后再转成对象,就可完成深度克隆

  • 相关阅读:
    LINUX系统 下载地址 LINUX镜像站 Centos ubuntu
    LINUX 操作命令大全
    THINKPHP3.2 配置Redis 使用 for windows
    THINKPHP3.2 中使用 soap 连接webservice 解决方案
    THINKPHP3.2+PHP5.3 配置MEMCACHE
    初学C#过程中的记录的一些认为以后有用的东西
    C#面向对象设计模式纵横谈:Builder
    C#面向对象设计模式纵横谈:Singleton
    pattern:Abstract Factory (创建型模式)模式笔记
    数据结构与算法
  • 原文地址:https://www.cnblogs.com/yan7/p/7966141.html
Copyright © 2011-2022 走看看