码迷,mamicode.com
首页 > 其他好文 > 详细

ES6中箭头函数的作用

时间:2018-07-27 19:29:25      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:自动   必须   value   data-   down   fun   code   statistic   生成   

 

我们知道在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();

 

ES6中箭头函数的作用

标签:自动   必须   value   data-   down   fun   code   statistic   生成   

原文地址:https://www.cnblogs.com/vivaxiaonan/p/9378975.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!