gpt4 book ai didi

javascript - ES6 中 funcName() {} 和 funcName = () => {} 的区别

转载 作者:行者123 更新时间:2023-11-28 04:00:51 27 4
gpt4 key购买 nike

我最近一直在学习 React Native,我需要在组件之后访问自定义组件的属性,例如感动。我定义了以下组件:

export class OperationBox extends React.Component {
constructor(props) {
super(props);
}

startOperation() {
Alert.alert("starting operation " + this.props.operation);
}

render() {
return (
<TouchableHighlight onPress={this.startOperation}>
<Text>{this.props.operation}</Text>
</TouchableHighlight>

);
}
}

当组件被触摸时,应用程序崩溃,并显示 undefined is not an object when evaluating this.props.operation 。但是,如果我定义函数 startOperation()像这样:startOperation = () => { ... } ,我得到了预期的行为。

现在,我想我明白了这些箭头函数是如何工作的。来自 Swift 背景,我认为它们就像闭包一样,但我肯定错过了一些东西吗?为什么第一种方法不行,而第二种方法可以?

最佳答案

简单回答:在 ES6 Classes

funcName() {} 创建“类方法”,但 funcName = () => {} 不会。

这就是全部ECMASCRIPT 2015 语法标准。

但是,您可以克服这个问题;)

Is it possible to use arrow functions in classes with ES6?

关于javascript - ES6 中 funcName() {} 和 funcName = () => {} 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47125118/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com