这个问题在这里已有答案:
我有这个小提琴:
https://jsfiddle.net/moj94s0e/1/
我在哪里玩两个ES6课程。
第一个是一个简单的类,带有构造函数和方法(包含)。
class Names {
constructor (names) {
this.names = names;
}
contains (names) {
console.log(this);
}
}
第二个是使用包含第一个方法的另一个类(React组件):
class Hello extends React.Component {
constructor(props) {
super(props);
this.namesInstance = new Names(["Madrid", "Paris"]);
}
handleClick = () => {
this.namesInstance.contains(["Madrid"]);
}
render() {
return <div onClick={this.handleClick}>Hello {this.props.name}</div>;
}
}
我的问题很简单:我怎么可能在contains方法中访问它,考虑到它没有绑定到任何地方(也没有在构造函数中,在调用中或用箭头函数声明它)?
如果我将其更改为箭头功能,我也可以看到登录到控制台的类名,包括contains方法。
我不明白这种行为。
如果有人可以提供帮助,请。
这是arrow functions的预期行为。
它们用于短函数表达式,在这些表达式中没有任何意义,它具有自己的站点调用范围,而且,能够访问外部调用范围更方便。