es6 Object.is()方法
Object.is()方法
ES5 比较两个值是否相等,只有两个运算符:相等运算符(==
)和严格相等运算符(===
)。它们都有缺点,前者会自动转换数据类型,后者的NaN
不等于自身,以及+0
等于-0
。JavaScript 缺乏一种运算,在所有环境中,只要两个值是一样的,它们就应该相等。
ES6 提出“Same-value equality”(同值相等)算法,用来解决这个问题。Object.is
就是部署这个算法的新方法。它用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致。
Object.is('foo', 'foo')
// true
Object.is({}, {})
// false
不同之处只有两个:一是+0
不等于-0
,二是NaN
等于自身。
+0 === -0 //true
NaN === NaN // false
Object.is(+0, -0) // false
Object.is(NaN, NaN) // true
ES5 可以通过下面的代码,部署Object.is
。
Object.defineProperty(Object, 'is', {
value: function(x, y) {
if (x === y) {
// 针对+0 不等于 -0的情况
return x !== 0 || 1 / x === 1 / y;
}
// 针对NaN的情况
return x !== x && y !== y;
},
configurable: true,
enumerable: false,
writable: true
});
es6 Object.is()方法相关推荐
- es6 Object.getPrototypeOf()方法
Object.getPrototypeOf()方法 ES6 Object.getPrototypeOf方法可以用来从子类上获取父类. Object.getPrototypeOf(ColorPoint) ...
- es6 Object.assign()方法
Object.assign()方法 基本用法 Object.assign()方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target). const target = ...
- es6 遍历数组对象获取所有的id_ES6对象遍历Object.keys()方法
[Object.keys()] ES5 引入了Object.keys()方法,返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名var obj = { foo ...
- es6 javascript对象方法Object.assign()
1 基本用法 Object.assign方法用于对象的合并,将源对象( source )的所有可枚举属性,复制到目标对象( target ). var target = { a: 1 }; var ...
- ES6中Object新增方法
1.Object.is() Object.is()它用来比较两个值是否严格相等,与严格比较运算符( === )的行为基本一致,是在三等号判断的基础上新增了两个不同之处. Object.is()不同之处 ...
- JavaScript 复制对象与Object.assign方法无法实现深复制
在JavaScript这门语言中,数据类型分为两大类:基本数据类型和复杂数据类型.基本数据类型包括Number.Boolean.String.Null.String.Symbol(ES6 新增),而复 ...
- es6 Object.getOwnPropertyDescriptors()
Object.getOwnPropertyDescriptors() 前面说过,Object.getOwnPropertyDescriptor()方法会返回某个对象属性的描述对象(descriptor ...
- Object.assign()方法
1.对象的扩展 ES6中,对象的属性和方法可简写:对象的属性值可不写,前提是属性名已经声明: var name = "zhangsan";var password = " ...
- 数组方法 + ES6中数组方法 + 数组的空位
目录 1.静态方法 1.Array.isArray() Array.isArray方法返回一个布尔值,表示参数是否为数组.它可以弥补typeof运算符的不足. 2.Array.from() 用于将两类 ...
最新文章
- Androidx CoordinatorLayout 和 AppBarLayout 实现折叠效果(通俗的说是粘性头效果)
- 11.swift 单例
- Buy Tickets(poj 2828)
- 802.11b标准简介
- b树与b+树的区别_一文详解 B-树,B+树,B*树
- Codeforces Round #212 (Div. 2) C. Insertion Sort 思维
- centos7升级gcc到5.3.0
- 敏捷开发:影响地图工作坊的反思
- Android 应用开发(30)---Git之使用GitHub搭建远程仓库
- Java怎样获取Content-Type的文件类型Mime Type
- 优秀代码所具备的5大品质 你的代码呢?
- python火了_【资源篇】Python那么火,你还不知道如何人门?
- stm32-sbus数据接收,并通过CAN转发给车辆控制
- Maven cmd 打包命令
- 地域和地方的区别_地方、地域、地区、地面、地段的区别_近义词词典_词林在线词典...
- python实用程序育儿法下载_Python机器学习经典实例
- 团队的英文翻译缩写_有感情的一起游戏的团队英文缩写
- 如何在linux系统上添加网口打印机
- 基于JAVA体育用品购物系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
- 再见c罗再见梅西_再见眼镜你好smartglasses