`

ES6新标准-对象的扩展Object.is()

 
阅读更多

用来比较两个值是否严格相等。与严格比较运算符(===)的行为基本一致,不同之处有两个:

      一是+0不等于-0

      二是NaN等于自身

 

+0 === -0 ;//true
NaN === NaN; // false
Object.is(+0, -0) ;// false
Object.is(NaN, NaN) ;// true

 兼容ES5添加如下代码:

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.docx

    * ES6中也引入了新的对象方法,例如Object.assign()和Object.is()。 数组 * ES6中引入了新的数组方法,例如Array.of()和Array.prototype.fill()。 * ES6中也引入了新的数组特性,例如类型化数组。 函数 * ES6中...

    06 You Don't Know JS:ES6 & Beyond.pdf

    - 讨论ES6中增强的对象API,如`Object.assign()`、`Object.keys()`等。 - 分析这些新方法如何提高对象操作的效率和便捷性。 3. **`Math` 数学** - 介绍ES6中新增的数学函数,如`Math.trunc()`、`Math.sign()`等...

    ES6经典面试题.docx

    Iterator 是一种标准,一种规范理念,遵循该标准的对象为可遍历对象,Set、Map、Array、Object、String 默认可以实现 Iterator 接口。 ES6 对 JavaScript 带来了很多改进和升级,提供了更加简洁、优雅的语法和方法...

    ES6语法学习参考资料,推荐下载

    对象的扩展包括了对象字面量的简洁写法、Object.assign()方法、Object.is()方法等。Symbol是ES6引入的一种新的原始数据类型,表示独一无二的值。Proxy和Reflect是两个与代理相关的新特性,Proxy可以创建一个对象的...

    ECMA-262.pdf

    12. **对象**: 包括`Object.assign()`, `Object.setPrototypeOf()`, `Object.getPrototypeOf()`等新方法。 13. **函数**: 新增箭头函数、默认参数、扩展运算符等功能。 14. **兼容性和性能**: 讨论了如何确保代码在...

    JavaScript基于对象编程

    在探讨JavaScript如何实现基于对象的编程之前,我们先来理解一下面向对象编程(Object-Oriented Programming, OOP)与基于对象编程(Object-based Programming)这两个概念。 ##### 4.1.1 什么是对象 在软件工程中...

    The Joy of JavaScript-2021.pdf

    构造函数是创建新对象的基础方式之一,它允许开发者定义一组属性和方法,这些属性和方法可以被多个对象共享。 **详细说明:** 构造函数是一种特殊类型的函数,它使用`new`关键字调用来创建新的对象实例。构造函数...

    es6中比较有用的7个技巧小结

    在ES6中,可以使用扩展运算符(`...`)来合并对象,这是一种简洁且易于理解的合并对象属性的方式。 ```javascript const page = { current: 1, pageSize: 10 }; const form = { name: "", sex: "" }; const ...

    ECMAscript常用新特性积累1

    - **对象的扩展运算** (`Object Spread`):`var extended = { ...obj, a: 10 };`,用于合并两个对象。 - **函数尾随逗号** (`Function Trailing Comma`):`function f(a, b, c,) {...}`,在函数参数列表末尾允许...

    JavaScript Prototype对象

    除了`Object.create`,还可以使用`__proto__`属性(不推荐,因为它不是标准的一部分,但大多数现代浏览器都支持)或者ES6的`class`语法来实现继承。此外,还可以使用`Object.getPrototypeOf`和`Object.setPrototype...

    ES15:ESLX

    2. **Array.from()**: 这个静态方法可以从类数组对象或可迭代对象创建一个新的数组实例。例如,`Array.from('hello')` 会返回 `[ 'h', 'e', 'l', 'l', 'o' ]`。 3. **Array.prototype.includes()**: 检查数组是否...

    is219

    8. ES6及其后续版本:ECMAScript是JavaScript的标准化规格,ES6(也称ES2015)引入了大量新特性,如let和const声明、模板字符串、类、模块系统等。后续的ES7至ES2022版本继续扩展和完善了语言特性。 9. 模块化:...

    IS4302

    9. **ES6及以后的版本**:ECMAScript是JavaScript的标准,ES6(也称为ES2015)引入了许多新特性,如类、模板字符串、解构赋值、箭头函数等。后续版本如ES2016+持续扩展和完善语言。 10. **模块化**:通过`import`和...

    不同浏览器javascript变量作用域的处理方法

    根据定义位置的不同,作用域可以分为全局作用域、局部作用域(函数作用域)以及块级作用域(ES6之后引入的新特性)。了解作用域的概念对于编写高效且易于维护的代码至关重要。 #### 三、具体案例分析 ##### 3.1 ...

Global site tag (gtag.js) - Google Analytics