• ES6中箭头函数的作用


     

    我们知道在ES6中,引入了箭头函数,其本质就是等同有ES5中的函数。类似于下面的写法: 
    let test1=() => “abc”; 
    let test2=() => { return “abc”}; 
    let sum=(a,b) => a+b;

    比如上面的3个ES6的箭头函数的写完,如果用ES5就像下面的写完一样。 
    其实其等同于下面的ES5的写法:

    function test1() {
    return "abc"
    }
    
    function test2(){
    return "abc"
    }
    
    function sum(){
    return a+b;
    }

    那为什么在ES6中引入了箭头函数呢? 最主要的目的就是解决this指针的问题。 
    我们知道在ES6中,我们可以创建一个class,如果我们默认在其里面加入一个函数的话,其必须在调用的时候,必须绑定this指针,否则不能访问当前类的实例里面的属性。下面举一个具体的例子,为什么其能解决this指针的问题。 
    比如下面一个一个Person类:

    function Person() {
      //Person()构造器定义了`this`指针,指向了其实例本身
      this.age = 0;
    
      setInterval(function growUp() {
        //在non-strict模式下,growUp()方法定义了‘this’作为一个全局的对象。其
        //不同于Person()构造器生成的‘this’指针
        this.age++;
      }, 1000);
    }
    var p = new Person();

    在ECMAScript 3/5中, 这个this的指针问题可以通过显示的制定this到一个变量,从而把Person()构造器生成的实例this指针,引入到函数中,具体写完如下:

    function Person() {
      var that = this;
      that.age = 0;
    
      setInterval(function growUp() {
        // The callback refers to the `that` variable of which
        // the value is the expected object.
        //这个回调函数引用了`that`变量,其值就代表的是当前对象,而不是一个全局的     //一个this对象
        that.age++;
      }, 1000);
    }

    这种写完有点啰嗦和繁杂,那么有没有更为简洁的方式呢?直到ES6出现了箭头函数,才彻底的解决这个问题。下面让我们看看ES6的箭头函数如何写的。

    function Person(){
      this.age = 0;
    
      setInterval(() => {
       // |this| 自动的指向当前Person的构造器生成的Person实例 
       //是不是感觉很简洁
        this.age++; 
      }, 1000);
    }
    
    var p = new Person();
  • 相关阅读:
    数据恢复与硬盘数据结构
    Add dynamic tooltips to buttons in dialog(转)
    Visual C++ 2008资源全搜罗(转)
    (转)学习数据恢复(四)
    如何开启Vista Aero效果
    硬盘FAT文件系统原理的详细分析
    web form弹出提示框
    WIN32_FIND_DATA and CFileFind
    编程老手与高手的误区
    (转)解读NTFS(三)
  • 原文地址:https://www.cnblogs.com/vivaxiaonan/p/9378975.html
Copyright © 2020-2023  润新知