一、es6的数值扩展
Number.EPSILON
:是JavaScript表示的最小精度。(当两数之差小于它时,课认为这两个数相等)
function equal(a,b){
if(Math.abs(a-b) < Number.EPSILON){
return true;
}else{
return false;
}
}
console.log(equal(0.2+0.3,0.5))
二进制和八进制
:
let b=0b1100;
let o=0o666;
Number.isFinite
:检测一个数值是否为有限数
console.log(Number.isFinite(200)) //true
console.log(Number.isFinite(200/0)); //false
console.log(Number.isFinite(Infinity)); //false
Number.isNaN
:检测一个数是否为NaN
console.log(Number.isNaN(321)); //false
Number.parseInt/Number.parseFloat
:字符串转整数
console.log(Number.parseInt('5201314love')); //5201314
console.log(Number.parseFloat('3.1415等等')); //3.1415
Number.isInteger
:判断一个数是否为整数
console.log(Number.isInteger(88)); //true
console.log(Number.isInteger(3,12)); //false
Math.trunc
:将数字的小数部分抹掉
console.log(Math.trunc(2.88)); //2
Math.sign
:判断一个数到底为正数负数还是零
console.log(Math.sign(20)); //1
console.log(Math.sign(0)); //0
console.log(Math.sign(-90)); //-1
二、es6的对象方法扩展
Object.is
:判断两个值是否完全相等。
(类似于===,但是在NaN的判断时,结果是true)
console.log(Object.is(88,88)); //true
console.log(Object.is(NaN,NaN)); //true
console.log(NaN === NaN) //false
Object.assign
:对象的合并
第二个对象覆盖第一个,当对象里的属性同名时则覆盖,不同名时则合并。
const hong = {
name:'红红',
age:19,
like:'吃饭',
text:'打豆豆'
}
const lv = {
name:'绿绿',
age:20,
like:'喝水'
}
console.log(Object.assign(hong,lv));//第二个覆盖第一个
Object.setPrototypeOf/Object.getPrototypeof
:设置原型对象/获取原型对象。
object.setprototypeof把第二个参数当成一个原型赋值给第一个参数的 proto 属性。
const book = {
name:'西游记'
}
const people = {
renwu:['孙悟空','猪八戒','牛魔王']
}
Object.setPrototypeOf(book,people); //设置原型对象
console.log(Object.getPrototypeOf(book)); //获取原型对象
console.log(book);
输出结果: