1

我有一个 ES6 Singleton 模式类,它的构造函数有一个名为namein 的变量。

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为纯函数吗?

4

0 回答 0