这里总结一下 ES6的语法
begin enjoy👇

  • 函数的默认参数
    function f(x, y = 123) {
        //替代原先使用 || 
        let y = y || 123;
    }
  • (...)函数参数语法

    • 当其作为函数形参时,称为rest剩余参数,将多个值凝聚成数组
          function f(...args) {
              //替代了arguments
      
          }
      
    • 当和数组一起使用时,它是将数组展开为多个值,spread语法
          //用来复制或者拷贝数组
          const arr = [1,2,3];
          const arr2 = [...arr];
          //解析数组为多个参数
          Math.max.apply(null, arr);
          Math.max(...arr);
      
  • 箭头函数的声明

    let f = () => {

    }
  • 字面量对象扩展语法

    • 简洁属性

          let foo = "hello",
              bar = "world";
          const o = {
              foo : foo,
              bar : bar,
          } //简写成
          const o = {foo, bar};
      
      
    • 简洁方法

          const o = {
              f : function () {},
              g : function () {},
          } //简写成,和class中方法的声明一样,function语法糖
          const o = {
              f () {},
              g () {},
          }
      
    • 计算属性

          let bar = "baz";
          const o = {
              foo : "hello",
          }
          //原来计算属性必须动态添加 使用[]添加,其中bar是变量
          o[bar] = "world";
          //es6简化
          const o = {
              foo : "hello",
              bar : "world",  //bar是标识符,不是变量bar
              [bar] : "world",
          }
      
    • 拦截器属性

          const o = {
              name : "张三";
          }
          //给o对象的name属性添加拦截器 使用defineProperty方法
          Object.defineProperty(o, name, {
              set () {},
              get () {}
          })
      
          //es6中可以直接在字面量中设置拦截器
          const o = {
              name : "张三",
              //添加属性拦截器
              get name () {
                  return name;
              },
              set name (val) {
                  name = val;
              }
          }
      
  • 关于作用域的

    • let创建块级作用域
    • const创建块级常量
  • 解构赋值

        //先解析解构提取成员,再将它们赋值给变量列表
        const arr = ["a", "b", "c"];
        let [a, b, c] = arr;
        const obj = {foo : "hello", bar : "world"};
        let {foo, bar} = obj;
    
  • 模板字符串的使用

    • 格式化字符串输出,支持排版的字符串``
    • 支持插入表达式,以${}创建表达式
  • 面向对象相关

    • class类语法糖
          class Foo {
              //class体内使用简洁方法 不用添加,
              constructor () {
      
              }
      
              f () {
      
              }
      
              g() {
      
              }
      
          }
      
    • constructor 构造函数
    • extends 实现类继承
    • super 调用父类或者父对象的方法
    • static 声明静态方法

posted @ Zycin (非转载 来自个人学习资料整理)