ES6笔记

ES6

ES5常见的数组方法(迭代/遍历数组)

  1. forEach() : 缺点: 不能使用break和continue
  2. map() : (映射):遍历数据并返回一个新的数组,对数的处理会返回原先对应的位置
  3. filter() : 过滤,返回复合条件的数据 return true,则是吧当前真的数据 存入新的数组 否则不存
  4. some() : 如果有复合条件的记录, 则返回真,否则返回假
  5. every(): 如果每一个数据都复合条件,则返回真,否则返回假
  6. reduce(): 常用来实现累加的
  let arr = [300,600,200,100]
  // 首次调用时,sum是第一个元素,val是第二个元素,index是1
  // 再次调用时,sum是上一次return的结果,val依次是下一个元素
  let result = arr.reduce((sum,val,index)=>{
      console.log(sum,val,index);
      return sum + val;
  })
  console.log(result);

  //第二个参数是sum的初值,则第一次调用 时,val是第一个元素
  let result = data.list.reduce((sum,val,index)=>{
      return sum + val.price;
  },0)
  console.log(result);

let - const

ES5作用域:全局作用域,函数作用域(局部作用域)
ES6
let: (1)定义块级作用域 {} (2)在同一块级作用域不能重复声明
const: 定义常亮 (1)声明必须负值 (2)不允许更改

箭头函数

箭头函数的语法 : ()=>{}

  1. 箭头函数中的this指向:指向定义它的函数的this
  2. 没有参数可以写 ()=>{} ; -- 有一个参数可以写 item=>{}; -- 只有一条return语句,可以不写{} let fun = ()=>1;

类和继承

  class Parent {
      // 等同es5中的构造函数
      constructor(name,age){
          this.name = name;
          this.age = age
      }
      //等同es5中向原型对象添加方法
      run(){
          console.log("run")
      }
  }

  class Child extends Parent{
      constructor(name,age,grade){
          //相当于调用父类的构造函数
          super(name,age)
          this.grade = grade;
      }
      study(){
          console.log('study')
      }
  }

  let c1 = new Child('Jack',23,'六');
  console.log(c1)

ES6对象字面量的简写 属性名和属性一样的话可以直接写obj{name,age}
模板字符串 模板字符串的写法和拼接:

内容:${变量}


结构赋值 : 对象的 let {name,age} = obj 数组的 let [num1,num2] = arr
展开运算符: [...arr1] 等价于: 把arr1中的元素一个一个拿出来,放到新的数组中

默认参数和剩余参数
ES5的默认参数: function(a){ a = a || 12 }
ES6的默认参数: 可以直接在参数的后面加上 function(a=12){} ---有是有多个参数的话默然参数必须写在最后面

剩余参数

  // ===================剩余(rest)参数: 得到所有的实参,等同于es5中 arguments,
  function total(...a){
      // ES5: 
      // console.log(arguments)  //伪数组

      // args: 真数组
      // console.log(args instanceof Array);
      console.log(a);
  }
  total(23,45)

Symbol数据类型

Symbol: 获取唯一不会重复的变量,是ES6新增的数据类型

set

set: 是ES6中新增的集合的数据类型,用来存放数组。但是,数组的元素不允许重复
set 可以用for..each 遍历 不能使用数组对象的方法map()...
ES6使用set的数组去重

    let arr = [1,2,3,5,1,2,1]
    let result = [...new set(arr)]

    // set的声明:
    let set = new Set([1,2,3,4]);

for..of语句

遍历语句:

  1. forEach: (1) 可以遍历对象以外的集合 (数组,Set) (2)不能使用break和continue
  2. for...in (1)遍历对象 (2)不能直接访问对象的属性值
  3. ES6新增的for...of: (1)可以用于部署了Symbol.iterator的对象(自定义的对象不能使用for...of,但大部分原生的数据集合都可以使用)
    (2)可以使用break和continue

iterator迭代器

  1. 是一个函数
  2. 可以统一处理所有集合数据
  3. 返回一个next方法,调用next之后会返回一个包含两个属性的对象 {value:'',done:true}
  4. iterator是专供for...of来消费的

Object.keys方法

Object.keys(): 返回指定对象所有属性名组成的数组

Map类型的数据

Map: 类似与对象,用来存储键值对。
对象只能使用字符串作为属性名,而Map可以使用任意类型的数据做为属性名

  let map = new Map([["a",1],["b",2]])  //map声明 输出{"a"=>1,"b"=>2}
  • map的Apl

    属性: size 和length一样是代表长度的
    方法:

    • set: 添加 map.set("name","alice"); 给map添加了name=>alice
    • get: 读取 console.log(map.get("a")) 读取map里面a的属性 输出 1
    • has: 查找有没有该属性 有则为真 则为假
    • delete: 删除某个属性
    • clear: 清除所有属性
    //============================================for...of遍历
        // 获取属性名
        // for(let key of map.keys()){
        //     console.log(key)
        // }

        // 获取值
        // for(let val of map.values()){
        //     console.log(val)
        // }

        // 同时获取键值
        // for(let i of map){
        //     console.log(i)
        // }
        // 等同于
        // for(let i of map.entries()){
        //     console.log(i[0])
        //     console.log(i[1])
        // }

        // for(let [key,value] of map.entries()){
        //     console.log(key)
        //     console.log(value)
        // }


        // let obj = {
        //     name: 1,
        //     age: 2
        // }
        // delete obj.age
        // console.log(obj)

Promise


promise是什么

1、主要用于异步计算
2、可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果
3、可以在对象之间传递和操作promise,帮助我们处理队列

为什么会有promise?

为了避免界面冻结(任务)
  • 同步:假设你去了一家饭店,找个位置,叫来服务员,这个时候服务员对你说,对不起我是“同步”服务员,我要服务完这张桌子才能招呼你。那桌客人明明已经吃上了,你只是想要个菜单,这么小的动作,服务员却要你等到别人的一个大动作完成之后,才能再来招呼你,这个便是同步的问题:也就是“顺序交付的工作1234,必须按照1234的顺序完成”。

  • 异步:则是将耗时很长的A交付的工作交给系统之后,就去继续做B交付的工作,。等到系统完成了前面的工作之后,再通过回调或者事件,继续做A剩下的工作。

你可能感兴趣的:(ES6笔记)