Как создать экземпляр класса Singleton с переданным аргументом конструктора? - PullRequest
0 голосов
/ 05 марта 2020

У меня есть один файл класса, который я хочу использовать как синглтон

// class.js
class A {
  constructor() {}
  method x
}
export default new A();

И его используют несколько файлов, что хорошо, например:

// use1
import a from 'class.js'
a.x()
// use2
import a from 'class.js'
a.x()

Однако, если я хочу передать аргумент классу при инициализации экземпляра, как я могу это сделать?

// class.js
class A {
  constructor(spec) {}
  method x
}
export default new A(spec);
// use1 need to do something like this
import spec from 'config.js'
import a(spec) from 'class.js' ?
a.x()
// use2
import spec from 'config.js'
import a(spec) from 'class.js'
a.x()

Кроме того, будет действительно избыточно передавать spec ко всем файлам.

Есть ли способ, которым я могу инициализировать его только один раз в одном месте, но сделать его одиночным?

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Вы можете использовать объект вместо класса, который буквально Singleton.

0 голосов
/ 05 марта 2020

Вы не можете передать аргумент во время оператора import. Почему бы вам просто не импортировать spec в классе. js? Таким образом, каждый раз, когда вы импортируете a, он уже будет инициирован с нужными аргументами конструктора.

// class.js
import spec from 'config.js'

class A {
  constructor(spec) {}
  method x
}
export default new A(spec);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...