ES6 --- 数值扩展、对象拓展

Number

(1)Number.EPSILON 表示最小精度,2.2204.......

            console.log(0.1 + 0.2 === 0.3) // false

            function equal(a, b) {
                if (Math.abs(a - b) < Number.EPSILON) {
                    return true
                }
                return false
            }

            console.log(equal(0.1 + 0.2, 0.3)) // true

注:

JavaScript 语言的底层根本没有整数,所有数字都是小数(64位浮点数),计算整数时可以实现比如,console.log(3/1) // 3,但是浮点数计算是错误的console.log(0.3 / 0.1) //2.9999999999999996,当小数精度大于53或者数据长度大于53位时,会出现数据不正确的现象。

JavaScript浮点数比较问题_松鼠陛下的博客-CSDN博客_js 浮点数比较

(2)Number.isFinite()判断一个数字是否是有限的

            console.log(Number.isFinite(0.3 / 0.1)) // true
            console.log(Number.isFinite(0.3)) // true
            console.log(Number.isFinite(100 / 0)) // false
            console.log(Number.isFinite(Infinity)) // false

(3)Number.isNaN 检测一个数值是否为NaN

(4)Number.parseInt()  Number.parseFloat()会自动截取给的字符串开头的数字

            console.log(Number.parseInt('521hhh')) // 521
            console.log(Number.parseFloat('0.521hhh')) // 0.521

(5)Number.isInteger()判断一个数是否为整数,只能判断数值

            console.log(Number.parseInt('521hhh')) // 521
            console.log(Number.parseFloat('0.521hhh')) // 0.521

(6)Math.trunc()将数字的小数抹掉

console.log(Math.trunc(5.21)) //5

(7)Math.sign()判断一个数是负数、正数、0

对象

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

            console.log(Object.is(120, 121)) // false
            console.log(Object.is(120, 120)) // true
            console.log(Object.is(NaN, NaN)) // true
            console.log(NaN === NaN) // false

Object.is()用于确定两个值是否相同,两个值相同有如下的几种情况:

  1. 都是 undefined

  2. 都是 null

  3. 都是 true 或 false

  4. 是长度相同的两个字符串,并且每个序号对应的字符相同

  5. 相同的两个对象(两个对象有相同的引用地址)

  6. 两个相同的数字:

    • 都是 +0

    • 都是 -0

    • 都是 NaN

    • 都不是0且不是NaN,并且值相同

  Object.is与 ==运算符得到的结果不一样。==会在比较之前对符号两边的值进行强制类型转换(当他们类型不同时)。

  Object.is与 ===运算符得到的结果也不一样。- 0 === + 0 是 true,而Number.NaN === NaN 是 false

判断两个值是否相同——Object.is( ) - 走看看

(2)对象合并  -- 配置文件的合并还挺好用的

            const CONFIG1 = {
                host: '127.0.0.1',
                port: '3306',
	            active:true
            }
            const CONFIG2 = {
                host: '192.168.8.102',
                port: '3309',
                passeord: '123456',
                username: 'hhh'
            }

            console.log(Object.assign(CONFIG1, CONFIG2))

(3)设置原型对象

什么是原型

每个JavaScript对象(null除外)在创建的时候都会关联另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型继承属性。 阮一峰 javascript_JavaScript核心概念-原型、原型链_weixin_39998541的博客-CSDN博客

快速掌握 JS 面试题之『原型和原型链』_哔哩哔哩_bilibili

 隐式原型 -- 对象默认会有一个__proto__,指向创建对象时的类的原型;类本身有prototype,当自己找不到方法时,会向上找,即原型中查找

 原型链  --  一层一层的继承时,原型会形成链

teachet.hasOwnProperty() // 检查方法是自己的,还是原型中的 

instanceof() 当时引用类型时,无法使用typeof查看是什么对象,比如数组和Object,使用instanceof是可以查看的,instanceof查看的是原型链上的都为true,如果不存在在原型链上,则都是false

Obeject.setPrototypeOf(school,cities) // 支持所有的,即支持对象,也支持数组,理论上引用类型都可以使用。

注:不建议后序设置原型

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值