es6学习记录

---恢复内容开始---

1.let or  const

  有块级作用域,let 声明变量,const声明常量

2.箭头函数

  不绑定this 隐式返回 简单明了  

  不宜使用箭头函数

    构造函数,一个方法需要绑定到对象 (new)

    需要使用到this的时候

    需要使用到arguments 

3.函数默认值

  conat A =(a=5, b=3)=> {}

  A();

  参数默认去判断undefined A(undefined,3) 要不能指定 null A(null, 4)

4.模板字符串

  `${}` 可以放变量,可以放表达式,数组循环

  

  

  

 

5.字符串函数

  startWith() 当前字符串是否是以另外一个给定的子字符串“开头”的,

  endWith() 当前字符串是否是以另外一个给定的子字符串“结尾”的,

  includes() 查找

  repeat(n)  重复 n 次

6.对象解构

  const top = {a: 1, b: 2, c:3}

  const {a, b, c} = tom;

  {a:A} 重命名 (要用A)

  {d = '默认值'} 要明确undefined才会用默认值 null 0 都不会用

7.数组解构

  const arr = [a, b, c]

  const  [a, ...d] = arr  // d[b,c]

  交换位置 [a, b] = [b, a]

8.for in  循环

  for 循环 

  forEach 不能打断

  for in  下标值

  for of  属性值 可以终止和跳过  支持 字符串,nodeList (不支持对象)

  

  

9.数组新方法

  Array.from() (不是数组原型上面的方法)

 

    可以将伪数组(NodeList, arguments)转为真正的数组, 字符串也能转换成数组 'aa' // ['a', 'b'] 

  Array.of()

    可以弥补数组原生的缺陷 返回输入的参数的数组    

    

  find() 找到数组中合适的元素就会结束循环,节约性能

    Array.find((e,i,arr) => {})

  findIndex()  找到数组中合适的下标就会结束循环,节约性能

    Array.find((e,i,arr) => {})

  some() 对数组中有一个符合条件的就返回布尔值 一真即真

  every() 对数组中有所有符合条件的就返回布尔值 一假即假

10. 剩余参数

  function a(a,...arr){}

  a(1,2,3,4,5)

  const arrs = ['name', 123, 2.4, 3.4, 5.6]

  const [name, id, ...arr] = arrs

11.扩展运算

  const arr = [...arr1, ...arr2]

12.Promise

  解决 回调地狱 

  Promise.all([]) 当所有的请求都成功后会返回数据,数据的顺序就是数组中请求的方法的顺序

  Promise.race([]), 返回请求中的第一个reslove 结果

    const A = new Promise((reslove, reject) => {
                setTimeout(() => {
                    reslove('我是大A');
                }, 2000)
            })
        const B = new Promise((reslove, reject) => {
                setTimeout(() => {
                    reslove("我是大B")
                    // reject('失败啦')
                }, 200)
            })
        Promise.all([A, B])
        .then(res => console.log(res)) // 全部成功才会走then,有一个失败就走catch
        .catch(err => console.log(err));

        Promise.race([A, B])
        .then(res => console.log(res)) // 返回第一个结果
        .catch(err => console.log(err))

13.symbol

  第7种数据类型,可以作为唯一标示,定义对象私有化属性

const peoples =
            {
                xiaoming: {age: 23},
                xiaohong: {age: 24},
                xiaoming: {age: 25} // 会覆盖第一个小明,要用symbol 
            }
        const _peoples = {
            [Symbol('xiaoming')]: {age: 23},
            [Symbol('xiaohong')]: {age: 24},
            [Symbol('xiaoming')]: {age: 25}
        }
        // 打印后会输出Symbol对象
        // {Symbol(xiaoming): {…}, Symbol(xiaohong): {…}, Symbol(xiaoming): {…}}
        // Symbol(xiaohong): {age: 24}
        // Symbol(xiaoming): {age: 23}
        // Symbol(xiaoming): {age: 25}
        // 要用Object.getOwnPropertySymbols 方法遍历symbol类型
        const keys = Object.getOwnPropertySymbols(_peoples).map(p => _peoples[p]);
        console.log(keys);
        // (3) [{…}, {…}, {…}]
        // 0: {age: 23}
        // 1: {age: 24}
        // 2: {age: 25}

 

posted @ 2019-05-22 10:29  xiaxuening  阅读(120)  评论(0编辑  收藏  举报