首页 > 解决方案 > 当函数被分配为属性时,绑定有效,但为什么呢?

问题描述

我试图了解绑定在 Javascript 中的工作原理以及以下示例的工作原理。但是当我尝试使用this.numbers.map(this.doSomething)它时,它会给我一个错误,因为doSomething它是被静态调用的。为了让它再次工作,我将不得不使用第二个例子,但我不明白到底发生了什么。有人有一些链接/文档可以用来更好地理解这一点吗?

第一个例子:

export class SomeClass{
  numbers = [1, 2, 3];
  showNumber = (value: number) => console.log(`number is:`, value);

  processNumbers = () => {
    const a = this.numbers.map(b => this.doSomething(b));

    // this gives me the error: 'showNumber' doesn't exist
    // const a = this.numbers.map(this.doSomething);

    // do something with a
  }

  private doSomething(value: number) {
    this.showNumber(value);
  }
}

const someClass = new SomeClass();
someClass.processNumbers();

第二个例子:

export class SomeClass{
  numbers = [1, 2, 3];
  showNumber = (value: number) => console.log(`number is:`, value);

  processNumbers = () => {
    const a = this.numbers.map(this.doSomething);

    // do something with a
  }

  private doSomething = (value: number) => {
    this.showNumber(value);
  }
}

const someClass = new SomeClass();
someClass.processNumbers();

标签: javascriptbinding

解决方案


推荐阅读