一个关于ES6语法的问题?

最近在写React,在定义一个class的方法时,看到了如下fun1和fun2这两种写法,用起来都没有问题。看了下阮大师的入门指南,发现都是fun1这种写法,那么这两种写法有啥区别呢?

class MyClass {
    name = 1;

    fun1() {        console.log(this.name);
    }
    fun2 = () => {        console.log(this.name);
    }
}


郎朗坤
浏览 785回答 2
2回答

Qyouu

写代码最主要的是,实现功能即可。这两种写法,你需要理解的只有两点,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的语言特性,任何框架里面都是一样的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript