为什么我们不需要绑定这个函数? [重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我有这个小提琴:

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方法。

我不明白这种行为。

如果有人可以提供帮助,请。

javascript ecmascript-6 bind arrow-functions
1个回答
0
投票

这是arrow functions的预期行为。

它们用于短函数表达式,在这些表达式中没有任何意义,它具有自己的站点调用范围,而且,能够访问外部调用范围更方便。

© www.soinside.com 2019 - 2024. All rights reserved.