zoukankan      html  css  js  c++  java
  • ES6 箭头函数

    解决的问题

    1.缩减代码         2.改变this指向

    1.缩减代码

    ES5
    const double = function(number){
      return number * 2  
    }
    
    ES6
    const double = (number) => number * 2
    

    2.改变this指向

    ES5
    const team1 = {
      members: ['Henry', 'Elyse'],
      teamName: 'es6',
      teamSummary: function(){
             return this.members.map(function(menber){
                  return `${member}隶属于${this.teamName}小组`
             })
      }  
    }
    
    console.log(team1.teamSummary())         // ['Henry隶属于undefined小组', 'Elyse隶属于undefined小组']
    
    分析:因为map方法中会改变this的指向,this不知道该指向谁
    
    
    ES5
    const team2 = {
      members: ['Henry', 'Elyse'],
      teamName: 'es6',
      teamSummary: function(){
             return this.members.map(function(menber){
                  return `${member}隶属于${this.teamName}小组`
             }, bind(this))
      }  
    }
    console.log(team2.teamSummary())  // ['Henry隶属于es6小组', 'Elyse隶属于es6小组']
    
    分析:bind可以将父级this的指向到map中
    
    ES5
    const team3 = {
      members: ['Henry', 'Elyse'],
      teamName: 'es6',
      teamSummary: function(){
            let that = this
             return this.members.map(function(menber){
                  return `${member}隶属于${that.teamName}小组`
             })
      }  
    }
    console.log(team3.teamSummary())  // ['Henry隶属于es6小组', 'Elyse隶属于es6小组']
    
    分析:将父级this赋值到that变量,在map中用that就相当于用this
    
    ES6
    const team4 = {
      members: ['Henry', 'Elyse'],
      teamName: 'es6',
      teamSummary: function(){
             return this.members.map((menber) =>{
                  return `${member}隶属于${this.teamName}小组`
             })
      }
    }
    console.log(team4.teamSummary())  // ['Henry隶属于es6小组', 'Elyse隶属于es6小组']
    
    分析: map中this的指向,是指向map函数父级的this
    

    建议将以上代码在编辑器中运行查看,可以记忆比较深刻

  • 相关阅读:
    Linux下Bind error: Address already in use处理
    详解基本TCP套接字函数
    C/C++常用头文件及函数汇总
    Centos编译Unix网络编程(第三版)卷1的源代码
    C++ 多线程中使用cout还是printf
    VIM常用指令
    Linux C头文件查找与动态库搜索
    linux常用头文件详解
    linux makefile自动生成
    ubuntu开机出现memtest86,重启也无法取消的原因
  • 原文地址:https://www.cnblogs.com/gqx-html/p/11276698.html
Copyright © 2011-2022 走看看