这些都是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. 兼容火狐,Chrome,IE6,IE7,IE8的HTML换行写法

    本文链接:https://java-er.com/blog/html-break-line-firefox-chrome/ 兼容火狐,Chrome,IE6,IE7,IE8的HTML换行写法1.任意数据 ...

  2. Mybatis 不支持通配符扫包起别名问题

    typeAliasesPackage 默认只能扫描某一个路径下,或以逗号等分割的 几个路径下的内容,不支持通配符和正则,采用重写的方式解决 package com.xxxx.xxx.util.comm ...

  3. grpc提供http服务

    package main import ( "google.golang.org/grpc" "google.golang.org/grpc/credentials&qu ...

  4. mybatis-helper

    mybatis-helper 在mapper层可以跳转到sql xml中 只需要在idea plugin中搜索即可.

  5. 【一起来烧脑】底层HTTP深入笔记

    [外链图片转存失败(img-0GQ8QDNb-1563568792102)(https://upload-images.jianshu.io/upload_images/11158618-5bc7a2 ...

  6. Reed-Solomon纠错码的译码

    其中用到了等比数列展开:1/(1-\alpha).  此时,似乎应该将\alpha视为模远小于1的复数. 只有这样,\alpha^i 才能作为一个有限域中的元素展开.它在一个半径小于1的圆上,由若干具 ...

  7. 第12组 Alpha冲刺(1/6)

    Header 队名:To Be Done 组长博客 作业博客 团队项目进行情况 燃尽图(组内共享) 展示Git当日代码/文档签入记录(组内共享) 注: 由于GitHub的免费范围内对多人开发存在较多限 ...

  8. linux 查看文件内容的几种命令

    cat #将文件内容输出到屏幕head #查看文件开头N行tail #查看文件末尾N行tailf #动态的查看的写入,有写入时屏幕输出vim.vi #文件编辑器,也可以当是查看文件{进入文件}grep ...

  9. Leetcode42. 接雨水

    42. 接雨水 做法 考虑单独一列能生产多少贡献:用左右最大值去接这列的水 \(O(n)\) Code class Solution { public: int mx[1000000],rx[1000 ...

  10. git用ssh方式下载代码

    1.运行Git Bash客户端,执行ls ~/.ssh; 如果列出下图这两个rsa文件,那应该就不需要配置ssh key了,如果不放心就将这几个文件删掉,重新生成. 文件的默认目录:C:\Users\ ...