这些都是es6才有的

Object.assign

在a加上三个属性 分别是p1\p2\p3

以前是这么去加


b的三个属性p1、p2、p3就全部复制到a这个对象上了。


把后面的东西放到前面的东西上

两个对象都有同一个属性


后面有的重复的会覆盖前面

多个对象

再来一个c对象。

先把b的弄到a上面,再c的弄到a上面。

让c也有同样的属性a1 看看会不会覆盖前面的

深拷贝还是浅拷贝


a=1,
b=a,b的值也是1,把a的数值拷贝到b上。
最终输出的a还是1,a和b是各自的内存存储着自己的值,


a的值不是对象,是内存中地址的引用。

对于大多数语言来说,深拷贝是不可能的


理论上的深拷贝是把heap里面的内存也复制一份。但是完美的深拷贝是不可能的。我们永远无法知道一个函数内用到了哪些数据,除非看它的源码知道用到了哪些数据。

Object.assign所有的拷贝都是浅拷贝。

b里面有个obj对象,给a以后。b的obj和a的obj地址是相同的

修改了a的obj.name那么b的对象的值也变化了。

总结

只拷贝可枚举的属性。

b.toString打印出来对象,toString是不可枚举的


b.b1的值。

b要有get,a要有set,猜可能拷贝过去。这里知道这么一回事就可以了

常用的用法是第一个参数是一个空对象,这样就可以接受别的对象的所有属性。

同样的目的,不一样的写法

我的总结:

1.复制后面的对象属性到前面的,

2.重复属性后面的会覆盖前面的

3.后面对象可以是多个,也就是同时复制多个对象的属性到前面参数第一个对象。

4.null和undefined的属性也会被复制过去。

5.复制对象都是浅拷贝

ES6深入浅出-11 ES6新增的API(上)-1.Object.assign的更多相关文章

  1. ES6深入浅出-11 ES6新增的API(上)-2.Array新增API

    Array.form 把不是数组的东西变成数组.最常见的就是把伪数组变成数组 那么什么是伪数组 这就是伪数组,因为它不是继承自Array的原型的对象.它只是一个看起来很像数组的数组 只看下面的代码.a ...

  2. ES6深入浅出-12 ES6新增的API(下)-1.录屏

    String.includes es5里面判断字符串是否存在的方法 search searcg的厉害之处是可以使用正则 match正则的方式 repeat -1遍,就不合法 startsWith 判断 ...

  3. ES6深入浅出-10 ES6新增的数据类型-2.Set与数组去重

    一种新的数据类型,它是对象的一种,Set,很像数组,又不是数组. Set 类型 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Refe ...

  4. ES6深入浅出-10 ES6新增的数据类型-1.Symbol与隐藏属性

    ES5现有的数据类型.7种数据类型. 新的类型是属于Object 最普通的类型.plain object 数组array 函数function 下面这些都属于Object类型. 今天要讲的 set类型 ...

  5. ES6深入浅出-7 新版的类(上集)-1.介绍原型

    ES6新出的关键class BE受雇与网景开发了JS 当我们在写一个对象的时候,我们实际上内存的形式表示. obj等于一个空对象,可以直接toString.它为什么可以有toString window ...

  6. ES6深入浅出-7 新版的类(上集)-2.介绍JS中的类

    声明对象原型,公有属性. obj对象,它用一个属性__proto__记录了自己的原型 改掉它的原型为公有属性.那么obj这个对象及有了hi的方法.因为obj自己没有hi.那么就去自己的原型上去找了. ...

  7. ES6深入浅出-10 ES6新增的数据类型-3.其他类型

    Map类型 Map 类型 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map Ma ...

  8. ES6深入浅出_汇总贴

    H:\BaiDu\ES6深入浅出-wjw ES 6 新特性一览:https://frankfang.github.io/es-6-tutorials/ 我用了两个月的时间才理解 let https:/ ...

  9. es6 Object.assign ECMAScript 6 笔记(六) ECMAScript 6 笔记(一) react入门——慕课网笔记 jquery中动态新增的元素节点无法触发事件解决办法 响应式图像 弹窗细节 微信浏览器——返回操作 Float 的那些事 Flex布局 HTML5 data-* 自定义属性 参数传递的四种形式

    es6 Object.assign   目录 一.基本用法 二.用途 1. 为对象添加属性 2. 为对象添加方法 3. 克隆对象 4. 合并多个对象 5. 为属性指定默认值 三.浏览器支持 ES6 O ...

随机推荐

  1. Net线程间通信的异步机制

    线程间通信 我们看下面的图 我们来看线程间通信的原理:线程(Thread B)和线程(Thread A)通信, 首先线程A 必须实现同步上下文对象(Synchronization Context), ...

  2. JS基础篇之作用域、执行上下文、this、闭包

    前言:JS 的作用域.执行上下文.this.闭包是老生常谈的话题,也是新手比较懵懂的知识点.当然即便你作为老手,也未必真的能理解透彻这些概念. 一.作用域和执行上下文 作用域: js中的作用域是词法作 ...

  3. Java switch语句使用注意事项

    1.多个case后面的值不可以重复 2.switch后面小括号的数据类型(case 后面的数值类型)只能是以下类型 基本数据类型: byte / short / char / int 引用数据类型:S ...

  4. C# 判断程序是否执行 进行启动或前台显示

    #region 显示程序 [DllImport("user32.dll", EntryPoint = "FindWindow")] public static ...

  5. HDP 大数据平台搭建

    一.概述 Apache Ambari是一个基于Web的支持Apache Hadoop集群的供应.管理和监控的开源工具,Ambari已支持大多数Hadoop组件,包括HDFS.MapReduce.Hiv ...

  6. windows下命令行切换目录

    1.切换目录 C:\Users\MACHENIKE> cd H:/www C:\Users\MACHENIKE>H: H:\www> 2.查看目录文件 H:\www>dir

  7. 执行DTS包将excel导入数据库

    利用ssms生成dtsx文件,必须以32bit执行,到路径执行C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn > dtexec ...

  8. Codevs 1500 后缀排序(后缀数组)

    1500 后缀排序 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 天凯是MIT的新生.Prof. HandsomeG给了他一个 ...

  9. 洛谷P1901发射站

    题目 一道单调栈裸题,主要是用单调栈维护单调性,和单调队列都可以在\(O(n)\)的时间内得出单调最大值或最小值,要比堆要快. 这个题可以用h来当做单调栈的使用对象,即用单调栈来维护高度,高度是越在栈 ...

  10. 对okhttp参数的一些思考

    背景 项目中使用OkHttp访问三方服务 参数 创建okhttp客户端类的时候需要设置一些参数,有些可能是坑,仅供参考: client = new OkHttpClient.Builder() .di ...