Изменение переменной, определенной в конструкторе класса с чистой функцией - PullRequest
1 голос
/ 13 мая 2019

У меня есть шаблонный класс ES6 Singleton с его конструктором, который получил переменную с именем name in.

class Sample {
  constructor (){
    this.name = ''
  }

  setName = (name)=> {
    this.name = name
  }
  getName = () => {
    return this.name
  }
}
export default new Sample()

Этот класс используется в другом модуле класса с синтаксисом import.

// another class module
import Sample from './Sample'

class AnotherClassModule {

  sampleMethod = async () => {
    // some code
    await Sample.setName('First Name')
  }

  //some code
  anotherSampleMethod = async () => {
    // some code
    const name = await Sample.getName()
    // some code
  }
}

Насколько я знаю, при использовании этого способа у нас есть * побочный эффект в функции setName, потому что она изменяет значение переменной, которая выходит за ее рамки. Следовательно, setName не является чистой функцией.

Есть ли у нас какое-либо решение заменить setName на чистую функцию?

...