Post

ES6学习笔记

  • 块级作用域let和const,其中const声明的变量不得改变值。
  • 解构赋值:从数组或对象中提取值,赋值到对应位置的变量,有点像批量赋值。比如

    let [a, b, c] = [1, 2, 3] ```给abc分别赋值为1、2、3
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    + 字符串新增的方法:
    + 支持超出\uFFFF的unicode码点,用大括号将码点括起来即可;
    + 新增方法codePointAt()
    + 新增String.fromCodePoint(0x20BB7)用于返回码点对应的字符串,支持了超出\uFFFF的unicode码点。
    + **for**(let a **of** 'who'),for...of语法用于遍历超出\uFFFF的unicode码点的字符串
    + includes()、startsWith()、endsWith()
    + 'who'.repeat(3):重复三次who,结果为whowhowho
    + 补全:'who'.padStart(6, 'ab')结果为 'abawho''who'.padEnd(6, 'ab')结果为 'whoaba'
    + 支持模板字符串
    + 函数
    + 增加了函数的默认值设置,如function(x =9,y)
    + rest参数,比如:function z(a,...numbers),numbers是一个数组类型的变量,但是调用z函数时可以这样调用:let a=1;z(a,2,3);...numbers必须是最后一个参数,即不能把a放到...numbers的后边
    + 扩展运算符:调用一个多个入参的函数时,可以传入“...数组”的形式充当入参,...数组将转换为以逗号分隔的参数,扩展运算费使用的是for...of的方式将数组进行遍历的
    比如:
    ```javascript
    function test(a,b,c){
    return a+b+c;
    }
    let numbers = [1, 2, 3];
    console.log(test(...numbers));//打印出来是6

    • 箭头函数
    • 绑定this:::运算符会自动将左边的对象,作为上下文环境(即this对象),绑定到右边的函数上面。比如:x::y等同于y.bind(x)
  • 对象

    • 对象的属性简写、方法名字简写
    • 对象的属性名、方法名可以是表达式

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      var birth = '2000/01/01';
      let propKey = 'foo';
      var Person = {
      name: '张三',
      //等同于birth: birth
      birth,
      //等同于hello: function ()...
      hello() { console.log('我的名字是', this.name); },
      //等同于foo:true,abc:123
      [propKey]:true,
      ['a' + 'bc']: 123,
      //方法名也可以是表达式
      ['h' + 'ello']() {
      return 'hi';
      }
      };
    • Object.is(a,b)

    • Object.assign(targetObject,srcObject1,srcObject2)
    • 遍历对象属性的方法:for…in、Object.keys(obj)、Object.getOwnPropertyNames(obj)、Object.getOwnPropertySymbols(obj)、Reflect.ownKeys(obj)
  • Symbol:新类型Symbol用于表示独一无二的属性名。let s = Symbol(‘s’);s.toString();不能与其他类型进行计算;
  • 数组
    • Array.from可以将类似于数组的对象转换为数组,也可以将set、map转换为数组
    • Array.from(对象或集合,箭头函数用于过滤第一个参数的值),比如javascript Array.from([1,2,3],x=>x.x),返回的值是1,4,9
  • Set、WeakSet
  • Map,允许对象作为key存储到map中,当想批量往map中放入值时:可以通过构造函数传入入参,任何具有iterator接口的数据结构都可以作为数组构造函数的入参
  • Proxy、Reflect
  • Promise
  • for…of循环可以使用的范围包括数组、Set 和 Map 结构、某些类似数组的对象(比如arguments对象、DOM NodeList 对象)、后文的 Generator 对象,以及字符串。

Comments