es6(二) 箭头函数

var f = () => 5;
// 等同于
var f = function () { return 5 };

var sum = (num1, num2) => num1 + num2;

var sum = (num1, num2) => { return num1 + num2};


// 等同于
var sum = function(num1, num2) {
  return num1 + num2;
};

箭头函数体内的this指向的是定义时所在的对象,而不是执行时所在的对象。箭头函数绑定this的指向,很大程度解决了过去this动态指向的困扰,可以大大减少显示绑定this对象的写法(call,apply,bind)。

let obj1={fun:function(){
  setTimeout(function(){console.log(this)})
}};
obj1.fun();//Window,上例是传统的定义函数,this的指向改为了window,通常情况下,我们都是在setTimeout外面定义that=this来确定指向,解决问题。

 
obj2={fun:function(){
  setTimeout(()=>console.log(this))
}};
obj2.fun();//Object(),箭头函数下的this指向并没有改变,而是指向obj2
 


 

原文地址:https://www.cnblogs.com/geekjsp/p/9868079.html