首页 > 其他 > 详细

对象方法

时间:2021-04-28 14:40:13      阅读:21      评论:0      收藏:0      [点我收藏+]

1、Object.is()

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

ES6里Object.is部署这个算法的新方法,用来比较两个值是否严格相等,与ES5里的严格相等运算符基本一致,

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

 

实例:

    let a = -0
    let b = +0
    let c = NaN
    let d = NaN
    if(a==b){
         console.log("ES5  ==  +0  -0...",true);
     }else{
         console.log("ES5  ==  +0  -0...",false);
     }
     if(Object.is(a,b)){
         console.log("ES6 Object.is()  +0   -0...",true);
     }else{
         console.log("ES6  Object.is()  +0   -0...",false);
     }
     if(c==d){
         console.log("ES5   == NaN ...",true);
     }else{
         console.log("ES5  ==  NaN ...",false);
     }
      if(Object.is(c,d)){
          console.log("ES6 Object.is()  NaN == NaN...",true);
      }else{
          console.log("ES5 Object.is()  NaN == NaN...",false);
      }

 

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
});

 

2、

对象方法

原文:https://www.cnblogs.com/zhishiyv/p/14713350.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!