我有这个小提琴:
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方法。
我不了解这种行为。
如果有人可以帮助,请
答案 0 :(得分:0)
这是arrow functions的预期行为。
它们用于短函数表达式,在这种表达式中,没有自己的站点调用范围是没有意义的,此外,能够访问外部 this 更加方便。