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

1、Object.assign()可以在对象为一层的时候,实现简单的“深拷贝功能”

var obj1 = {a:'1',b:'2'}
var obj2 = Object.assign({}, obj1 )
obj2.a = '3'
console.log(obj1) // {a:'1',b:'2'}
console.log(obj2)  //{a:'3',b:'2'}
 
当被可枚举属性为一层的对象时,使用Object.assign可以实现简单的‘深拷贝’功能,不会改变obj1的数据
 

2、Object.assign()可以在对象为两层或者多层的时候,此时第一种的“深拷贝功能”便无法继续使用。

var obj1 = {name:{a:'1',b:'2'}}
var obj2 = Object.assign({}, obj1 )
obj2 .name.a = '4'
console.log(obj1 )   //name: {a: 4, b: '2'}

console.log(obj2 )   //name: {a: 4, b: '2'}

 
当被可枚举属性为多层的对象时,使用Object.assign可以复制obj1的内容,但是会改变obj1的数据
 

神奇的Object.assign()的更多相关文章

  1. Object.assign方法复制或合并对象

    Object.assign() 方法可以把任意多个的源对象自身的可枚举属性拷贝给目标对象,然后返回目标对象 var obj = { a: 1 }; var copy = Object.assign({ ...

  2. Object.assign()方法

    对象的扩展 1.ES6中,对象的属性和方法可简写:对象的属性值可不写,前提是属性名已经声明: var name = "zhangsan"; "; var obj = { ...

  3. 微信不支持Object.assign

    微信不支持Object.assign,让我Vue怎么用QAQ... 解决方法: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Refe ...

  4. object.assign()方法的使用

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

  5. [Javascript] Object.assign()

    Best Pratices for Object.assign: http://www.cnblogs.com/Answer1215/p/5096746.html Object.assign() ca ...

  6. [Redux] Avoiding Object Mutations with Object.assign() and ...spread

    Learn how to use Object.assign() and the spread operator proposed for ES7 to avoid mutating objects. ...

  7. [ES6] Object.assign (with defaults value object)

    function spinner(target, options = {}){ let defaults = { message: "Please wait", spinningS ...

  8. Object.assign()

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

  9. 学习Object.assign()

    Object.assign()用于将所有可枚举的值从一个或多个源对象复制到目标对象.它将返回目标对象. 语法 Object.assign(target, ...source); var obj = { ...

  10. es6 Object.assign

    ES6 Object.assign 一.基本用法 Object.assign方法用来将源对象(source)的所有可枚举属性,复制到目标对象(target).它至少需要两个对象作为参数,第一个参数是目 ...

随机推荐

  1. Keil 5(Keil C51)安装与注册 [ 图文教程 ]

    前言 Keil C51 是 51 系列兼容单片机 C 语言软件开发系统,支持 8051 微控制器体系结构的 Keil 开发工具,适合每个阶段的开发人员,不管是专业的应用工程师,还是刚学习嵌入式软件开发 ...

  2. web应用开发模式、API接口、接口测试工具postman

    web应用开发模式.API接口.接口测试工具postman web开发模式 前后端混合开发模式 前后端混合开发模式是指前后端代码混合,所有的HTML代码和数据在服务器端拼接好,一次性将内容发送到客户端 ...

  3. C语言定制DEBUG信息

    C语言定制DEBUG信息 背景与问题 在日常编写程序中,我们经常需要输出一些调试信息帮助我们 DEBUG 或者更好的编程,通常我们的做法是这样的: 在需要的地方直接printf(...)输出有用的信息 ...

  4. Zabbix“专家坐诊”第180期问答汇总

    问题一 Q:老师,请教个问题,zabbix通过自动发现扫描网段,然后添加主机,有没有什么办法区分路由器或者交换机类型的方法,这样才能把交换机模板或者路由器模板挂给对应的主机A:不多的话, 批量加2次模 ...

  5. 使用pycharm打开sqlite的问题

    目录 问题:有同学在sqlite数据库文件执行数据库迁移完成前,点开了他,导致sqlite数据库被pycharm当成文本文件打开了,并且不会改了. 其实sqlite文件和电脑中的其他文件(xx.mp4 ...

  6. 基于GenericAPIView以及五个视图扩展类写接口

    目录 基于GenericAPIView以及五个视图扩展类写接口 一.基于GenericAPIView写接口 二 .基于GenericAPIView以及五个视图扩展类写接口 基于GenericAPIVi ...

  7. C#网络爬虫开发

    1前言 爬虫一般都是用Python来写,生态丰富,动态语言开发速度快,调试也很方便 但是 我要说但是,动态语言也有其局限性,笔者作为老爬虫带师,几乎各种语言都搞过,现在这个任务并不复杂,用我最喜欢的C ...

  8. 合肥光源储存环束流三维参数测量系统相关PV

    合肥光源纵向震荡数据源相关PV 合肥光源纵向震荡数据源相关PV的增补 在上两文中公布了一些PV,依然有效. 本来发过了,那篇里的PV有些命名的不太好,比如PositionX.PositionY等,感觉 ...

  9. sort()排序以及多个属性数组对象排序(按条件排序)

    原生排序 let arr = [5,2,1,4,9,8] for(let i = 0 ; i < arr.length ; i ++) { for(let j = 0 ; j < arr. ...

  10. 图卷积神经网络分类的pytorch实现

    图神经网络(GNN)目前的主流实现方式就是节点之间的信息汇聚,也就是类似于卷积网络的邻域加权和,比如图卷积网络(GCN).图注意力网络(GAT)等.下面根据GCN的实现原理使用Pytorch张量,和调 ...