Как мне использовать const внутри функции при рефакторинге до класса в Javascript - PullRequest
0 голосов
/ 10 июля 2020

Предполагая, что у меня есть функция, которая используется как класс:

function Builder() {
  const a = somethingThatReturnsAnArray();
  this.b = somethingThatReturnsAnotherArray();

  this.foo = () => {
    a.push('test');
    this.b.push('test');
  }
}

// Later...

const builder = new Builder();
builder.foo();

Есть ли разница между объявлением a как константы и b прикрепленным к this? Могу ли я преобразовать эту функцию в класс ниже?

class Builder {
  constructor() {
    this.a = somethingThatReturnsAnArray();
    this.b = somethingThatReturnsAnotherArray();
  }

  foo() {
    this.a.push('test');
    this.b.push('test');
  }
}

Если да, есть ли какие-то предостережения при преобразовании всего в свойства класса?

Думаю, преобразование const b = ... в this.b будет иметь некоторые подводные камни, но я не уверен. Как правильно это сделать? Другими словами, как мне использовать const внутри функции при рефакторинге класса в Javascript?

1 Ответ

1 голос
/ 10 июля 2020

a должен быть частным в классе.

class Builder {
  #a = somethingThatReturnsAnArray();

  constructor() {
    this.b = somethingThatReturnsAnotherArray();
  }

  foo() {
    this.#a.push('test');
    this.b.push('test');
  }
}
...