es6学习:数值扩展、对象方法的扩展

1. 数值扩展

Number.EPSILON是js 最小精度
Number.isFinite检测一个数值是否为有限数
Number.isNaN检测一个数组是否为NaN
Number.parseInt与Number.parseFloat字符串转整数
Number.isInteger判断一个数是否为整数
Math.trunc将数字的小数部分抹掉
Math.sign判断一个数到底为正数(1)   负数(-1)   0(0)   -0(-0)   其他值,如字符串(NaN)
    console.log(0.1 + 0.2 === 0.3) // false
    function equal (a, b) {
      return Math.abs(a-b) < Number.EPSILON
    }
    let isEqual = equal(0.1+0.2, 0.3)
    console.log(isEqual) // true

    1.1 二进制和八进制

      ES6 提供了二进制和八进制数值的新写法,分别用前缀0b(0B)0o(0O)表示。从ES5开始,严格模式下,八进制就不再允许使用前缀0(零)表示,ES6进一步明确使用前缀0o表示。如果要将0b和0o前缀的字符串数值转为十进制,要使用Number方法。

Number('0b111') // 7
Number('0o10') // 8

2. 对象方法的扩展

    2.1 Object.is  判断两个值是否完全相等

      功能上相等于===的比较,但除了NaN与NaN的比较。

console.log(Object.is(120, 120)) // true
console.log(Object.is(0.1+0.2, 0.3)) // false 
// 功能相等于===  但除了NaN之间的比较
console.log(Object.is(NaN, NaN)) // true  
console.log(NaN === NaN) // false   

    2.2 Object.assign  对象的合并

      在对象合并时,如果在两个对象中出现相同的属性名,则后面的值会覆盖前面的值,不重复的部分进行合并处理。

    const config1 = {
      host: 'localhost',
      port: 3306,
      name: 'root',
      pass: 'root',
      xxxx: 'xxxx'
    }
    const config2 = {
      host: 'http://baidu.com',
      port: 33060,
      name: 'baidu.com',
      pass: 'baidu',
      test: 'test'
    }
    let test = Object.assign(config1, config2)
    console.log(test)

    2.3 Object.setPrototypeOf 设置原型对象  Object.getPrototypeOf

      在Object.setPrototypeOf(A, B)中,为A的原型中添加B。当获取原型对象时,是该对象下的一级原型。

    const school = {
      name: '北大大'
    }
    const cities = {
      area: ['东', '西', '南', '北']
    }
    Object.setPrototypeOf(school, cities)
    let xx = Object.getPrototypeOf(school)
    console.log(school, xx)


下一篇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值