一、数值扩展
1、Number.EPSILON
Number.EPSILON是JavaScript表示的最小精度,EPSILON属性的值接近于2.22E-16(2.22乘以10的负16次方)
比如:比较两个数谁大谁小,如果两个数的差值小于Number.EPSILON,那么认为这两个数相等的。
用在浮点数运算上面。
function equal(a, b){
if(Math.abs(a-b) < Number.EPSILON){
return true;
}else{
return false;
}
}
console.log(0.1 + 0.2 === 0.3);
console.log(equal(0.1 + 0.2, 0.3));
2、二进制、八进制、十六进制
二进制0b开头,八进制0o开头,十六进制0x开头。
let b = 0b1010;
let o = 0o777;
let x = 0xff;
console.log(b);
console.log(o);
console.log(x);
3、Number.isFinite
检测一个数值是否为有限数。
console.log(Number.isFinite(100));
console.log(Number.isFinite(100/0));
console.log(Number.isFinite(Infinity)); //无限数
4、Number.isNaN
检测一个数值是否为NaN。
console.log(Number.isNaN(123)); //false
5、Number.parseInt和Number.parseFloat
字符串转数值。会截断。
console.log(Number.parseInt('5211314love'));
console.log(Number.parseFloat('3.1415926神奇'));
6、Number.isInteger
判断一个数是否为整数。
console.log(Number.isInteger(5));
console.log(Number.isInteger(2.5));
7、Math.trunc
将数字的小数部分抹掉。
console.log(Math.trunc(3.5));
8、Math.sign
判断一个数到底为正数、负数、还是零。
console.log(Math.sign(100));
console.log(Math.sign(0));
console.log(Math.sign(-20000));
二、对象方法扩展
1、Object.is
判断两个值是否完全相等。功能约等于【===】符号。
console.log(Object.is(120, 120));
console.log(Object.is(120, 121));
2、Object.assign
对象的合并。如果属性重名则覆盖,如果没有则保留原属性。
const config1 = {
host: 'localhost',
port: 3306,
name: 'root',
pass: 'root',
test: 'test'
};
const config2 = {
host: 'http://a.com',
port: 33060,
name: 'aaa',
pass: 'aaa',
test2: 'test2'
}
//用后面那个覆盖前面那个
console.log(Object.assign(config1, config2));
3、Object.setPrototypeOf和Object.getPrototypeOf
Object.setPrototypeOf设置原型对象。
const school = {
name: 'xxx三中'
}
const cities = {
xiaoqu: ['北京','上海','深圳']
}
//将school的原型对象设置为cities
Object.setPrototypeOf(school, cities);
console.log(school);
school对象的原型对象是cities(数组),cities对象的原型对象是Object。
建议用Object.create()方法设置原型对象。