ES6:对象方法扩展

1.Object.is(两个值是否完全相等)

Object.is用来判断两个值是否完全相等。

    <script>
        console.log(Object.is(100, 100));//true
        console.log(Object.is(100, 100.01));//false
        console.log(Object.is(0.1 + 0.2, 0.3));//false
    </script>

在这里插入图片描述
它也是不能解决精度缺失问题的。
它类似于全等===,但是也有所不同

	<script>
        console.log(+0 === -0);//true
        console.log(NaN === NaN);//false
        console.log(Object.is(NaN, NaN));//true
        console.log(Object.is(+0, -0));//false
    </script>

Object.is在严格等于的基础上修复了一些特殊情况下的失误,具体来说就是+0,-0,
NaN和NaN。

Object.is源码如下:

<script>
    function is(x, y) {
        if (x === y) {
            // 1/+0=+Infinity,1/-0=-Infinity,是不一样的
            return x !== 0 || y !== 0 || 1 / x === 1 / y;
        }
        else {
            //对NaN===NaN是false进行拦截,x!==x那么一定是NaN,y同理
            //都为NaN时true&&true 返回true
            return x !== x && y !== y;
        }
    }
</script>

2. Object.assign( 对象的合并)

语法:

Object.assign(left,right)

将对象left与对象right进行合并,如果left、right共有属性,则right将left此属性覆盖。

<script>
    const Person = {
        name: 'xy',
        sex: '男'
    }
    const Info = {
        name: 'xx',
        age: 21,
        eat: function () {
            console.log('吃饭');
        }
    }
    console.log(Object.assign(Person, Info));
</script>

在这里插入图片描述


3. Object.setPrototypeOf(设置原型对象) Object.getPrototypeOf(得到原型对象)

<script>
    let obj1 = {
        name: 'xy',
        age: '21'
    }
    let obj2 = {
        name: 'xx',
        age: '20'
    }

    Object.setPrototypeOf(obj1, obj2);
    console.log(obj1);
    console.log(Object.getPrototypeOf(obj1));
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值