JavaScript类方法与属性
我已经看到使用Javascript类的代码使用以下形式(示例是React):
class UserProfile extends Component { state = {
open: false
}
handleOpen = () => {
this.setState({ open: true })
}
}
为什么handleOpen
实现为设置为函数的属性,而不是类似以下内容的属性:
class UserProfile extends Component { state = {
open: false
}
handleOpen() {
this.setState({ open: true })
}
}
提前致谢!
回答:
这也是一个函数,但是它被称为 ,其工作原理与“传统”实现略有不同。它是随ECMAScript 6引入的。
这是
所说的:
箭头函数表达式的语法比函数表达式短,并且不绑定自身的this,arguments,super或new.target。这些函数表达式最适合于非方法函数,因此不能用作构造函数。
主要优点之一是您不需要绑定this
到该函数,因为箭头函数没有自己的this
对象:
在使用箭头函数之前,每个新函数都定义了自己的此值
这保证了示波器的安全性;不可能this
偶然使用不正确的内容。可以说它也更具可读性。
但是缺点是箭头函数是匿名的,这意味着当代码出错时将更难进行堆栈跟踪。但是对于React应用程序,我们可以使用devtool:’cheap-module-
eval-source-map从babel轻松找到我们堆栈跟踪中的错误。
以上是 JavaScript类方法与属性 的全部内容, 来源链接: utcz.com/qa/398834.html