文章目录

  • 1.Object.is()
  • 2.Object.assign()

1.Object.is()

再说Object.is()之前,先来说一下相等符(‘==’)和完全相等符(‘===’)。

相等符在判断值是否相等时,会进自动行类型转换,然后根据值来判断两者是否相等。而完全相等符不会进行类型转换,直接根据值和类型来判断两者是否相等。其中,完全相等符的 NaN(非数字值的特殊值,用于指示某个值不是数字) 不等于自身,以及 +0 等于 -0。

ES6提出"Same-value equality"(同值相等)算法,Object.is() 就是部署这个新算法的新方法,此算法可以达到在所有环境中,只要两个值是一样的,它们就应该相等,与完全相等符的行为基本一致。
不同的地方是:+0 不等于 -0,NaN等于自身。


2.Object.assign()

  • Object.assign()方法适用于对象的合并,就是将源对象(source)的所有可以枚举的属性复制到目标属性。Object.assign() 方法第一个参数是目标对象,后面的参数都是源对象。

  • 需要注意的是,如果目标对象(target)与源对象(source)拥有同名属性,又或者多个源对象拥有同名属性,这个时候后面的属性就会覆盖前面的属性,后来者居上。

  • 如果该参数传入的不是对象,则会先转成对象,然后返回。

    (图中10因为不是对象,所以它先转成了数字类型Number)

  • 由于 undefined 和 null 无法转成对象,所以如果他们作为参数,就会报错

  • 如果非对象参数出现在源对象的位置(即非首参数),那么处理规则有所不同,也就是说undefined和null不在首参数,就不会报错。

  • 其他类型的值(即数值、字符串和布尔值)不在首参数,也不会报错。但是,除了字符串会以 ‘数组形式’ 拷贝入目标对象,其他值都不会产生效果。这是因为只有字符串的包装对象会产生可枚举属性。


    (图中只有字符串v1拷贝入了目标对象({}),以数组形式)

读阮一峰ES6-对象的新增方法一相关推荐

  1. 读阮一峰ES6—Set数据结构

    文章目录 ES6-Set的数据结构 ES6-Set的数据结构 1. 基本用法 ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,不会添加重复的值. const s = new ...

  2. 阮一峰ES6入门读书笔记(七):运算符的拓展

    阮一峰ES6入门读书笔记(七):运算符的拓展 1. 指数运算符 ES6新增了一个指数运算符(**). 2 ** 2 // 4 2 ** 3 // 8 这个运算符的一个特点是右结合,而不是常见的左结合. ...

  3. 阮一峰es6电子书_ES6理解进阶【大前端高薪训练营】

    一:面向对象:类class 面向对象三大特性之封装 封装是面向对象的重要原则,它在代码中的体现主要是以下两点: 封装整体:把对象的属性和行为封装为一个整体,其中内部成员可以分为静态成员(也叫类成员)和 ...

  4. 阮一峰ES6入门读书笔记(十六):Moudle

    阮一峰ES6入门读书笔记(十六):Moudle 在 ES6 之前,社区制定了一些模块加载方案,最主要的有 CommonJS 和 AMD 两种.前者用于服务器,后者用于浏览器.ES6 在语言标准的层面上 ...

  5. 读阮一峰的React 入门实例教程有感

    读阮一峰的React 入门实例教程有感 阮一峰的React入门实例教程其实我在一年前就读过,当时就想学习React,其实那个时候刚刚jQuery入门,啥也不懂,看得云里雾里,所以后来就没有继续研究下去 ...

  6. 【ES6】阮一峰ES6学习(四) 对象的扩展

    对象的扩展 1. 属性的简洁表示法 ES6 允许在大括号里面,直接写入变量和函数,作为对象的属性和方法.这样的书写更加简洁. const foo = 'bar'; const baz = {foo}; ...

  7. 阮一峰 / ES6 数组的解构赋值

    目录 一.定义 二.详情讲解 1.数组解构:数组解构时数组的元素是按次序排列的,变量的取值由它的位置决定 2.对象解构:对象解构时对象的属性没有次序,变量必须与属性同名,才能取到正确的值. 三.用途 ...

  8. 读阮一峰对《javascript语言精粹》的笔记,我有疑问。

    <javascript语言精粹>是一本很棒的书籍,其中作者在附录列出了12种他所认为的javascript语言中的糟粕. 我最近开始跟读前端前辈的博客,其中读到了阮一峰的<12种不宜 ...

  9. 程序员的自我修养--读阮一峰《如何变得有思想》有感

    前言 年前无意浏览到阮一峰的网络博客(链接),一发不可收拾,从那以后一直追着拜读其博客,并看到了其在网站上的广告(暂且称为广告)<如何变得有思想>,果断买来拜读,但是一直忙于各种事情,最近 ...

  10. 实现阮一峰ES6的顶部加载条效果

    效果例子 阮一峰的ES6:http://es6.ruanyifeng.com/?search=s&x=13&y=3 html + css <style type="te ...

最新文章

  1. 2018 NLP圣经《自然语言处理综述》最新手稿已经发布!
  2. hashmap中的key是有序的么_HashMap?面试?我是谁?我在哪
  3. 网管型工业以太网交换机的几种管理方式
  4. Android视频开发基础
  5. highstack的一个bug
  6. sequelize模型关联_使用Sequelize来计算关联模型中的行数(其中id ='x')
  7. 软件测试的兼容性和易用性测试
  8. 未来五年,保险平权的最大机会来了
  9. 基于两输出一输入BP神经网络的传感器检测数据融合(附带MATLAB代码)
  10. $ 8 : gets函数与puts函数
  11. 循序渐进自学爬虫(一): 基础篇2
  12. 基于PHP+MySQL小区快递自助取件系统的设计与实现
  13. 解决谷歌翻译不能使用
  14. 调查数据分析的基本问题
  15. 学习淘淘商城第五十七课(接收Queue消息)
  16. emWin 2天速成实例教程007_Graph波形曲线图形控件使用方法
  17. 二次元风格博客引导页html源码
  18. 人脸爬取(人脸数据集的搜集)
  19. 记录利用ffmpeg对录制好的视频文件音量调整
  20. 升级的脉脉,正在以招聘业务铺开商业化版图

热门文章

  1. Epub2基础知识介绍
  2. 测绘地物的识别:建筑上怎么样区别挑廊、走廊、檐廊
  3. Office在线预览-永中
  4. QtableWidget的表格加载图片设置
  5. 中国单体酒店联盟沃家商务酒店(长沙)简介
  6. 什么样的音乐和呼噜声最配?
  7. 【项目源码】个人博客源码推荐
  8. 批判性思维_为什么批判性思维技能对数据科学家至关重要
  9. 51单片机c语言编程20个实例,51单片机C语言编程,20个实例..pdf
  10. 使用Android Studio 开发APP入门经验