最近在写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的语言特性,任何框架里面都是一样的。
添加回答
举报
0/150
提交
取消