前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Object.assign()

Object.assign()

作者头像
莫问今朝
发布2018-08-31 14:58:34
7180
发布2018-08-31 14:58:34
举报
文章被收录于专栏:博客园博客园

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()进行浅克隆

代码语言:javascript
复制
  //创建源对象
    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()方法复制对象我们只能复制对象中的值属性,而对于对象中引用属性,我们只能复制其引用

代码语言:javascript
复制
    //创建源对象
    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来实现  

代码语言:javascript
复制
 //创建源对象
    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字符串,然后再转成对象,就可完成深度克隆

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-12-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说明
  • 语法
  • 参数
  • 返回值
  • 例子:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档