数值扩展
- Number.EPSILON(接近于2.2E-16) 是 JavaScript 表示的最小精度。
function equal(a,b){ if(Math.abs(a-b) < Number.EPSILON){ return true }else{ return false } } console.log(0.1 + 0.2 === 0.3) // false console.log(equal(0.1 + 0.2, 0.3)) // true
- 二进制、八进制和十六进制
let b = 0b1010 // 二进制 = 十进制的 10 let o = 0o777 // 八进制 = 十进制的 511 let d = 100 // 十进制 let x = 0xff // 十六进制 = 十进制的 255 console.log(b) //10 console.log(o) //511 console.log(d) //100 console.log(x) //255
- Number.isFinite 检测一个数值是否为一个有限数。
console.log(Number.isFinite(100)) // true console.log(Number.isFinite(100/0)) // false console.log(Number.isFinite(Infinity)) //false (Infinity为无穷)
- Number.isNaN 检测一个数值是否为 NAN
console.log(Number.isNaN(123)) //false
- Number.parseInt 和 Number.parseFloat 字符串转整数
console.log(Number.parseInt('5201314love')) // 5201314 console.log(Number.parseFloat('3.1415926神奇')) //3.1415926
- Number.isInteger 判断一个数是否为整数
console.log(Number.isInteger(5)) //true console.log(Number.isInteger(2.5)) //false
- Math.trunc 将数字的小数部分抹掉
console.log(Math.trunc(3.5)) // 3
- Math.sign 判断一个数到底为正数、负数还是零
console.log(Math.sign(100)) // 1 console.log(Math.sign(0)) // 0 console.log(Math.sign(-200)) // -1
对象方法的扩展
- Object.is:判断两个值是否完全相等
console.log(Object.is(120,120)) // true console.log(Object.is(120,121)) // false
Object.is() 和 === 很像,但是也有区别
console.log(Object.is(NaN,NaN)) // true console.log(NaN === NaN) //false
- Object.assign:对象的合并
const config1 = { host: 'localhost', port: 3306, name: 'root', pass: 'root' } const config2 = { host: 'http://www.baidu.com', port: 33060, name: 'baidu.name', pass: 'love' } // 后面的覆盖前面的. 如果前面的有后面的没有的某个,则保留前面的某个,其余的仍然覆盖. console.log(Object.assign(config1, config2))
- Object.setPrototypeOf 设置原型对象 和 Object.getPrototypeOf 获取原型对象
const school = { name: '山东大学' } const cities = { xiaoqu: ['济南','威海'] } Object.setPrototypeOf(school, cities) console.log(school)
const school = { name: '山东大学' } const cities = { xiaoqu: ['济南','威海'] } Object.setPrototypeOf(school, cities) console.log(Object.getPrototypeOf(school))
不积跬步无以至千里 不积小流无以成江海