猫幻  


1.ES6明确二进制、八进制和十六进制分别用Qb、0o、ex作为前缀;
consoLe. log( Number(  0b11"));
console.log( Number ( ' 0o11"));console.log( Number ( ' 0x11"));
2. ES6提供了Number.isFinitel()、Number.isNaN()判断无穷大和 NaN;
//非数值为false,数值为true
console.log( Number.isFinite(10e));//NaN为true,其余为false
console.log( Number.isNaN( 100) );
3.ES6提供了Number.parseInt()、Number.parseF1oat()转换整型和浮点型;
console.log( Number.parseInt( "55.55a ' ));
console.log( Number.parseFloat( "55.555b" ));
4.ES6提供了Number.isInteger(),来判断参数是否是一个整型;
console. log( Number .isInteger(10)) ;

5.ES6提供了一个常量,值特别小,用于判断是否得到正确结果;

console.log((0.1+0.2-0.3).toFixed(20));
console.log(Number.EPSILON);//判断是否是正确结果
console.log(Number.EPSILON.toFixed(20));//直接打印
console.log((0.1+0.2-0.3)<Number.EPSILON);//


6.ES6+新增了一个指数运算符**,并且可以进行赋值运算;

console.log(2 ** 3);//** 赋值运算
let num =2;
num **=5;
console.log(num);
或备注解工典腼
最此s
二.Math扩展
1. ES6对 Math对象新增了一些方法.trunc()、.sign()、cbrt()、c1z32():2. .imul()、.fround()、.hypot()、expm1()、.log1p()、log10()、log2():
console.log(Math.trunc(5.55));//去掉小数部分
consoLe.log( Math .sign(-5));//判断是否为正、负、日还是 NaNconsole. log( Math . cbrt(2));//求出一个值的立方根
console. log( Math .cbrt(2));//求出一个值得立方根
console. log( Math .clz32(1));//求—个数的32位二进制
console.log( Math .imul(2,-4));//两个数整数形式相乘的结果带符号console.log(Math.fround(1.555));//求一个数单精度浮点形式
console.log( Math .fround(1.555));//求一个数单精度浮点形式
console.log(Math .hypot(3,4));//求出所有参数平方和的平方根console.log( Math . expm1( -1));1/返回Math.exp(x)-1
onsole.log( Math .expm1(1));//返回Math.exp(x)-1
onsole.log( Math .log10(1));//求10为底得x得对数
onsole.log( Math .log1p(1));//求1n(1+×) , Math.log(1+X)console.log( Math . log10(1));1/求10为底的×的对数
consoLe. log(Math .log2(3))//求2为底的×的对数
 
数组
1. ES6提供了(.)三个点将一个数组转换为逗号分割来进行处理;
function add(x,y){
    return x +y;
}
console.log(add(...[10,20]));三个点将一个数组转换为逗号分割

2.既然三点运算符通过逗号分割,那么可以想象的应用场景就随意发挥;
console.log(Math.max(...[10,20,30]));最大值
console.log([...[1,2], ...[3,4]]);合并数组

1.ES6提供了Array.of()方法,它的主要目的是弥补Array()的不足;
1 ES5声明数组,当小于两位,显示长度
let items=Array(1,2,3);
console.log(items);

ES6声明数组,简化版
let items =Array.of(3);
console.log(items);
 
2. ES6提供了Array.from()方法,将类似数组的对象或遍历转换成真正的数组:
let obj={
    0(.key):'name',
    1:'age',
    2:'gender',
    length:3
};
console.log(Array.from(obj));
ps对此严格 1.key必须是数值或字符串数字; 2.length设置长度而且key在范围内
什么样的场景会产生这种对象? 1.DOM的Nodelist集合; 2.es6新增的Set和Map
let nl= document.querySelectorAll('p');
console.log(nl);

3. ES6提供了find()和findIndex()方法,用于查找数组中第一个匹配的值;
let items=[10,20,30,40,50];
console.log(items.find(abc=>abc>19));
console.log(items.findIndex(abc=>abc>19));参数是一个回调函数可以用箭头函数findIndex可以得到索引

4.ES6提供了fi11(()方法,可以填充重写数组中的元素值;
let items=[10,20,30,40,50];
console.log(items.fill('a',2,3))索引3开始索引4开始

5. ES6提供了copywithin方法,从数组内部复制值,然后粘贴指定位置:
let items=[10,20,30,40,50];
console.log(items.copyWithin(2,0));从索引0开始复制 然后把值从索引20开始粘贴 参数30设置结束粘贴索引值



对象简写
1.ES6可以让对象字面量中属性初始值实现简写,一定程度降低了代码量;

ess
function fn(name,age){
return{
    name,
    age
}
}
console.log(fn('Mr.lee','100'));

es6
function fn(name,age){
    return{
        name,age
    }
    }
    console.log(fn('Mr.lee','100'));
 
2. ES6还提供了对象字面量中方法的简写方式,也降低了一定的代码量;
ess
let obj={
    fn:function(){
        return 'fn'
    }
};
console.log(obj.fn());
es6
let obj={
    fn(){
        return 'fn'
    }
};
console.log(obj.fn());
 
表达式
1.ES6允许对象字面量中,使用表达式进行属性名称的拼装操作;
let obj={
    ['user'+'Name']:'Mr.lee',
    ['user'+'Age']:100,
    'user Gender':'男'
};
console.log(obj.ueserName);
console.log(obj['ueserName']);//拼装组合属性
console.log(obj['ueser Age']);//有空格的情况下
console.log(obj['user Gender']);//字符串属性
2.ES6提供了在对象字面量中使用可计算(动态)属性名称,具体如下;
通过变量myName动态更改obj属性
问题是当变量值更改了属性名就失效了
let myName='naem';
let obj={
    name:'Mr.lee'
};

console.log(obj['myName']);
使用[myName]可以计算属性名
实现了真正的动态计算
let myName='abc';
let obj={
    [myName]:'Mr.lee'
};
console.log(obj);
3.ES6在对象字面量方法上,也可以使用拼装名称:
let obj={
['f'+'n'](){
    return 'fn';
}
};
console.log(obj.fn());
 
新增方法
1.ES6提供了0bject.is()方法来解决“===”中一些恒等中的缺点:;
console.log(Object.is(100,'100'));false必须相等
console.log(Object.is({},{}));false指向不同
console.log(+0 === -0);true
console.log(Object.is(+0,-0));fales
console.log(NaN === NaN);fales
console.log(Object.is(NaN,NaN));true

2.ES6提供了0bject.assign()方法可以合并指定对象至目标对象内部;
let obj1={
    name:'Mr.lee',
    age:100
};
let obj2={
    name:'Mr.Wang',
    age:200
};
let obj3={
    gender:'男'
};

console.log(Object.assign(obj1,obj2,obj3));传参合并所有对象返回给参数一的目标对象
console.log(obj1);//第一个对象得到合并后的结果
console.log(obj2);
ps:
1.如果属性有相同,后面的源对象内容会覆盖之前的属性值;
2.如果直接传非对象内容,会转换为对象:
3.如果传入的是undefined和l null会报错;
3.ES6提供了0bject.getPrototypeof()和 object.setPrototypeof()方法;
let obj={
    fn(){
        return 'fn';
    }
};
let obj2={
    fn(){
        return 'fn2';
    }
};
let f=Object.create(obj);//以obj对象为原型
console.log(f.fn());// 输出原型对象的fn
console.log(Object.getPrototypeOf(f) === obj)// 检查是obj是否f的原型对象
Object.setPrototypeOf(f,obj2);// 设置f的原型对象为obj2
console.log(f.fn());
 
4. ES6提供了super关键字,用于原型中方法的继承功能;
let obj={
    fn(){
        return 'fn';
    }
};
let f={
    fn(){
        return super.fn() + 'extend!';
    }
};
Object.setPrototypeOf(f,obj);//设置obj是f的原型
console.log(f.fn());

let h=Object.create(f);//可以再设置以f为原型
console.log(h.fn());
 
posted on 2021-11-28 11:09  猫幻  阅读(73)  评论(0编辑  收藏  举报