为了账号安全,请及时绑定邮箱和手机立即绑定

一个关于ES6语法的问题?

一个关于ES6语法的问题?

郎朗坤 2018-07-17 14:02:54
最近在写React,在定义一个class的方法时,看到了如下fun1和fun2这两种写法,用起来都没有问题。看了下阮大师的入门指南,发现都是fun1这种写法,那么这两种写法有啥区别呢?class MyClass {     name = 1;     fun1() {        console.log(this.name);     }     fun2 = () => {        console.log(this.name);     } }
查看完整描述

2 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

写代码最主要的是,实现功能即可。

这两种写法,你需要理解的只有两点,this的指向 和 箭头函数和普通函数this的区别

1.普通函数,this是在函数执行时候才确定的。谁调用这个函数,this指向谁,或者,手动call,apply指定this,或者bind生成一个指定了this的未调用函数。
2.箭头函数,this是在函数声明的时候,代码解析到声明表达式的时候,这时候this是谁就是谁。类似于普通函数+bind。

应用场景,个人觉得遇到的最多的情况,就是把A中有this的函数fn传到别的地方,在非作用域为A的情况下调用函数fn。这时候,可能你希望的是fn中的this指向的是A。这就需要你在A中声明时候声明成箭头函数,或者传递时候传递的是fn.bind(A)。

不只是React,我没用过React。这个知识点应该是js的语言特性,任何框架里面都是一样的。


查看完整回答
反对 回复 2018-07-20
  • 2 回答
  • 0 关注
  • 772 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信