ES6箭头函数及this

箭头函数是ES6中的新特性,他为我们提供了一种全新的书写函数的方法

箭头函数优化了ES5的函数语法,不需要在写function,如果函数体简单的话甚至可以不用写return

let fun = (x) => x*2;

1、只有一个参数时,括号可以省略
2、没有参数,括号不能省略
3、多个参数不能省略括号

回到主题,箭头函数和this

var a = 100;
var obj = {
    a : 10,
    fun : function(){
        console.log(this.a);
    }
};
obj.fun();  // 10

在ES5中,要想console结果是100的话,通常是var this = that或者bind

var a = 100;
var obj = {
    a : 10,
    fun : function(){
        console.log(this.a);
    }
};
obj.fun.bind(this)();  // 100

接下来用箭头函数试试

var a = 100;
var obj = {
    a : 10,
    fun:()=>{
        console.log(this.a);
    }
}
obj.fun();  // 100

总结:
箭头函数内部没有constructor方法,也没有prototype,所以不支持new操作。
但是它对this的处理与一般的普通函数不一样,箭头函数的 this 始终指向函数定义时的 this,而非执行时
就像上面例子看到的一样,箭头函数没有自己的this,会继承外部的this。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法。 上面代码检查函数l...
    呼呼哥阅读 8,917评论 0 1
  • 一、ES6简介 ​ 历时将近6年的时间来制定的新 ECMAScript 标准 ECMAScript 6(亦称 ...
    一岁一枯荣_阅读 11,271评论 8 25
  • 1.函数参数的默认值 (1).基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法。
    赵然228阅读 4,035评论 0 0
  • 三,字符串扩展 3.1 Unicode表示法 ES6 做出了改进,只要将码点放入大括号,就能正确解读该字符。有了这...
    eastbaby阅读 5,458评论 0 8
  • 官方中文版原文链接 感谢社区中各位的大力支持,译者再次奉上一点点福利:阿里云产品券,享受所有官网优惠,并抽取幸运大...
    HetfieldJoe阅读 8,081评论 4 14