运算符的扩展:
用(...)将一个数组转换成逗号分割进行处理   
 function add(x,y){
     return (x+y);
 }
console.log(add(...[10,20]));//30
console.log(Math.max(...[1,2,3,4,5]));//求取最大值
console.log(...[1,2],...[3,4],...[5,6]);//合并成一个数组

不加(...)结果就是:

方法的扩展:
//Array of()为了弥补Array的不足
let items=Array(1,2,3);//[ 1, 2, 3 ]
let items=Array(3);//[ <3 empty items> ]长度 小于两位显示长度
console.log(items);

let  items=Array.of(1,2,3);//[ 1, 2, 3 ]
let  items=Array.of(3);//[ 3 ]
console.log(items);
//Array.from()方法,将类似数组的对象或遍历转换成真正的数组;
let obj={
    0:'name',
    1:'age',
    2:'set',
    length:3
}
// console.log(obj);//{ '0': 'name', '1': 'age', '2': 'set', length: 3 }
console.log(Array.from(obj));//[ 'name', 'age', 'set' ]


//返回的是类似数组的对象
let ln=document.querySelectorAll("p");
console.log(ln);
//find()和 findIndex()方法,用于查找数组中第一个匹配的值;
let items=[10,20,30,40];
// 参数是回调函数,可以用箭头函数 findindex得到的是索引
console.log(items.findIndex(value=>value>19));//1 索引
console.log(items.find(value=>value>19));
//fill()方法,可以填充重写数组中的元素值;
let items=[1,2,3,4,5];
console.log(items.fill('a'));//[ 'a', 'a', 'a', 'a', 'a' ]
console.log(items.fill('a', 3 , 4));//[ 1, 2, 3, 'a', 5 ]
// copyWithin 方法,从数组内部复制值,然后粘贴指定位置;
let items=[1,2,3,4,5];
//从索引 0 开始复制值
//然后把值从索引 2 开始粘贴
//参数 3 设置结束粘贴索引
console.log(items.copyWithin(2,0));

对象的简写改进:

简写方案:

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

function fn(name,age){
    // ES5写法
    return {
        name:name,
        age:age
    }
}
console.log(fn("苏玮一",21));

function fn(name,age){
    // ES6写法
    return {
        name,age
    }
}
console.log(fn("苏玮一",21));

    2、对象字面量中方法的简写方式,也降低了一定的代码量

let obj={
    //ES5
    fn:function(){
        return 'fn';
    }
}
console.log(obj.fn());

let obj={
    //ES6
    fn(){
        return 'fn';
    }
}
console.log(obj.fn());

表达式方案:

    1、对象字面量中,使用表达式进行属性名称的拼装操作 

//拼装组合属性
let obj={
    ['user'+'name']:"苏玮一",
    ['user'+' age']:21,//有空格
    'user set':"女"//字符串
}
console.log(obj.username);
console.log(obj['user age']);
console.log(obj['user set']);

    2、在对象字面量中使用可计算(动态)属性名称

//通过变量 myName 动态更改 obj 属性名
//问题是当变量值更改了,属性名就失效了
let myname='name';
let obj={
    name:"苏玮一"
}
console.log(obj.name);//苏玮一
console.log(obj[myname]);//苏玮一

//使用[myName]可计算属性名
//实现了真正的动态计算
let obj={
    [myname]:"苏玮一"
}
console.log(obj[myname]);//苏玮一

    3、ES6 在对象字面量方法上,也可以使用拼装名称

let obj={
    ['f'+'n'](){
        return 'fn';
    }
}
console.log(obj.fn());