Object.is()方法

ES5 比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符(===)。它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0。JavaScript 缺乏一种运算,在所有环境中,只要两个值是一样的,它们就应该相等。

ES6 提出“Same-value equality”(同值相等)算法,用来解决这个问题。Object.is就是部署这个算法的新方法。它用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致。

  1. Object.is('foo', 'foo')
  2. // true
  3. Object.is({}, {})
  4. // false

不同之处只有两个:一是+0不等于-0,二是NaN等于自身。

  1. +0 === -0 //true
  2. NaN === NaN // false
  3. Object.is(+0, -0) // false
  4. Object.is(NaN, NaN) // true

ES5 可以通过下面的代码,部署Object.is

  1. Object.defineProperty(Object, 'is', {
  2. value: function(x, y) {
  3. if (x === y) {
  4. // 针对+0 不等于 -0的情况
  5. return x !== 0 || 1 / x === 1 / y;
  6. }
  7. // 针对NaN的情况
  8. return x !== x && y !== y;
  9. },
  10. configurable: true,
  11. enumerable: false,
  12. writable: true
  13. });

es6 Object.is()方法相关推荐

  1. es6 Object.getPrototypeOf()方法

    Object.getPrototypeOf()方法 ES6 Object.getPrototypeOf方法可以用来从子类上获取父类. Object.getPrototypeOf(ColorPoint) ...

  2. es6 Object.assign()方法

    Object.assign()方法 基本用法 Object.assign()方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target). const target = ...

  3. es6 遍历数组对象获取所有的id_ES6对象遍历Object.keys()方法

    [Object.keys()] ES5 引入了Object.keys()方法,返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名var obj = { foo ...

  4. es6 javascript对象方法Object.assign()

    1  基本用法 Object.assign方法用于对象的合并,将源对象( source )的所有可枚举属性,复制到目标对象( target ). var target = { a: 1 }; var ...

  5. ES6中Object新增方法

    1.Object.is() Object.is()它用来比较两个值是否严格相等,与严格比较运算符( === )的行为基本一致,是在三等号判断的基础上新增了两个不同之处. Object.is()不同之处 ...

  6. JavaScript 复制对象与Object.assign方法无法实现深复制

    在JavaScript这门语言中,数据类型分为两大类:基本数据类型和复杂数据类型.基本数据类型包括Number.Boolean.String.Null.String.Symbol(ES6 新增),而复 ...

  7. es6 Object.getOwnPropertyDescriptors()

    Object.getOwnPropertyDescriptors() 前面说过,Object.getOwnPropertyDescriptor()方法会返回某个对象属性的描述对象(descriptor ...

  8. Object.assign()方法

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

  9. 数组方法 + ES6中数组方法 + 数组的空位

    目录 1.静态方法 1.Array.isArray() Array.isArray方法返回一个布尔值,表示参数是否为数组.它可以弥补typeof运算符的不足. 2.Array.from() 用于将两类 ...

最新文章

  1. Androidx CoordinatorLayout 和 AppBarLayout 实现折叠效果(通俗的说是粘性头效果)
  2. 11.swift 单例
  3. Buy Tickets(poj 2828)
  4. 802.11b标准简介
  5. b树与b+树的区别_一文详解 B-树,B+树,B*树
  6. Codeforces Round #212 (Div. 2) C. Insertion Sort 思维
  7. centos7升级gcc到5.3.0
  8. 敏捷开发:影响地图工作坊的反思
  9. Android 应用开发(30)---Git之使用GitHub搭建远程仓库
  10. Java怎样获取Content-Type的文件类型Mime Type
  11. 优秀代码所具备的5大品质 你的代码呢?
  12. python火了_【资源篇】Python那么火,你还不知道如何人门?
  13. stm32-sbus数据接收,并通过CAN转发给车辆控制
  14. Maven cmd 打包命令
  15. 地域和地方的区别_地方、地域、地区、地面、地段的区别_近义词词典_词林在线词典...
  16. python实用程序育儿法下载_Python机器学习经典实例
  17. 团队的英文翻译缩写_有感情的一起游戏的团队英文缩写
  18. 如何在linux系统上添加网口打印机
  19. 基于JAVA体育用品购物系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  20. 再见c罗再见梅西_再见眼镜你好smartglasses

热门文章

  1. ubuntu 安装五笔
  2. 浅谈服务器使用RAID5磁盘阵列的问题
  3. Oracle Dba手记(读书笔记)
  4. 算法高级(14)-Nginx的负载均衡策略
  5. 好用的对象转xml、xml转对象工具类-支持集合嵌套转换(Java实现)
  6. Transformers与图神经网络的关系,我们能从transformer学习到什么?
  7. java 通过JLayeredPane实现背景图上添加其他控件
  8. 程序员笔记|常见的Spring异常处理
  9. 弱电施工流程及规范(二)
  10. 关于在MathType中内置样式的一些小知识