箭头函数
es6中的箭头函数
1、书写更简单了,而且如果函数体是一个表达式的话,不用写return,箭头函数,默认返回。
2、箭头函数解决了this的指向问题。
普通函数:根据调用我的人(谁调用我,我的this就指向谁),普通函数的this指向调用它的那个对象。
箭头函数:根据所在的环境(我再哪个环境中,this就指向谁)所以箭头函数的this永远指向其父作用域,任何方法都改变不了,包括call,apply,bind。
var obj = { a: 10, b: () => { console.log(this.a); // undefined console.log(this); // Window {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, frames: Window, …} }, c: function() { console.log(this.a); // 10 console.log(this); // {a: 10, b: ƒ, c: ƒ} } } obj.b(); obj.c();
var obj = { a: 10, b: function(){ console.log(this.a); //10 }, c: function() { return ()=>{ console.log(this.a); //10 } } } obj.b(); obj.c()();