数值扩展、对象方法扩展

数值扩展

0.Number.EPSILON 是 JavaScript 表示的最小精度
EPSILON 属性的值接近于 2.2204460492603130808472633361816E-16

  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));

在这里插入图片描述
使用console.log(0.1 + 0.2 === 0.3) 得出的结果为false ,所以我需要使用console.log(equal(0.1 + 0.2,0.3)) 才能得到 true。

1.二进制和八进制

ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示。

//二进制
let b = 0b1010;
console.log(b);

在这里插入图片描述

//八进制
let o = 0o777;
console.log(o);

在这里插入图片描述

//十六进制
let x = 0xff;
console.log(x);

在这里插入图片描述
2. Number.isFinite 检测一个数值是否为有限数, 即不是 Infinity


console.log(Number.isFinite(100));
console.log(Number.isFinite(100/0));
console.log(Number.isFinite(Infinity));

在这里插入图片描述
注意,如果参数类型不是数值,Number.isFinite一律返回false

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

console.log(Number.isNaN(123));

在这里插入图片描述
4. Number.parseInt Number.parseFloat 字符串装整数

console.log(Number.parseInt('999999999九九'));
console.log(Number.parseInt('88888888发发'));

在这里插入图片描述
5. Number.isInteger 判断一个数是否为整数

console.log(Number.isInteger(5));
console.log(Number.isInteger(2.5));

在这里插入图片描述
6. Math.trunc 将数字的小数部分抹掉

console.log(Math.trunc(5.2));
console.log(Math.trunc(9.9));

在这里插入图片描述

  1. Math.sign 判断一个数到底为整数 负数 还是零

    console.log(Math.sign(99));
    console.log(Math.sign(0));
    console.log(Math.sign(-99));
    

在这里插入图片描述

1 表示整数 , -1 表示负数

对象方法扩展

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

console.log(Object.is(999,888)) //跟 === 类似
console.log(Object.is(999,999))
console.log(Object.is(NaN,NaN));
console.log(NaN === NaN);

在这里插入图片描述

Object.is 与 === 类似,但是Object.is(NaN,NaN),得到的答案是true,NaN === NaN ,得到的答案则是 false

2.Object.assign 对象的合并

Object.assign() 用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。

const config1 = {
    host:'localhost',
    port:3306,
    name:'root',
    pass:'root',
    test:'test'
};
			
const config2 = {
    host:'https://123.com',
    port:3306,
    name:'123.com',
    pass:'999'
}
console.log(Object.assign(config1,config2));

在这里插入图片描述
Object.assign() 方法的第一个参数是目标对象,后面的参数都是源对象。

注意,如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性。

1)如果只有一个参数,Object.assign()会直接返回该参数。

const obj = {a:9};
console.log(Object.assign(obj) === obj)

在这里插入图片描述
2)如果该参数不是对象,则会先转成对象,然后返回。

console.log(typeof Object.assign(2));

在这里插入图片描述
3)由于undefined和null无法转成对象,所以如果它们作为参数,就会报错。

Object.assign(undefined)
Object.assign(null) 

在这里插入图片描述
4) 如果非对象参数出现在源对象的位置(即非首参数),那么处理规则有所不同。首先,这些参数都会转成对象,如果无法转成对象,就会跳过。这意味着,如果undefined和null不在首参数,就不会报错。

let obj = {a: 9};
console.log(Object.assign(obj, undefined) === obj);
console.log(Object.assign(obj, null) === obj);

在这里插入图片描述
3. Object.setPrototypeOf 设置原型对象 Object.getPrototypeOf

Object.setPrototypeOf 方法用来设置一个对象的原型对象(prototype),返回参数对象本身。

const books = {
	name:'名著'
}
const leibie = {
	bookName:['西游记','红楼梦','水浒传']
}
Object.setPrototypeOf(books,leibie);
console.log(books);

在这里插入图片描述
Object.getPrototypeOf 方法与 Object.setPrototypeOf 方法配套,用于读取一个对象的原型对象。

const books = {
	name:'名著'
}
const leibie = {
	bookName:['西游记','红楼梦','水浒传']
}
Object.setPrototypeOf(books,leibie);
console.log(Object.getPrototypeOf(books));

在这里插入图片描述
Object.values 和 Object.entries

Object.values() 方法返回一个给定对象的所有可枚举属性值的数组

Object.entries() 方法返回一个给定对象自身可遍历属性 [key,value] 的数组

//声明对象
const school = {
    name:'js123',
    cities:['广州','深圳','上海'],
    xueke:['前端','Java','大数据','测试']
}

//获取对象所有的键
console.log(Object.keys(school));
//获取对象所有的值
console.log(Object.values(school));
//entries
//获取对象所有的键
console.log(Object.entries(school));

在这里插入图片描述
Object.getOwnPropertyDescriptors

该方法返回指定对象所有自身属性的描述对象

//对象属性的描述对象
console.log(Object.getOwnPropertyDescriptors(school));

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值