Javascript 如何创建传递了构造函数参数的单例类实例?

Javascript 如何创建传递了构造函数参数的单例类实例?,javascript,class,singleton,Javascript,Class,Singleton,我有一个文件,它是我想用作singleton的类 // class.js class A { constructor() {} method x } export default new A(); 并且有多个文件使用它,这很好,例如: // use1 import a from 'class.js' a.x() 然而,如果我想在初始化实例时向类传递一个参数,我该怎么做呢 // class.js class A { constructor(spec) {} method x }

我有一个文件,它是我想用作singleton的类

// class.js
class A {
  constructor() {}
  method x
}
export default new A();
并且有多个文件使用它,这很好,例如:

// use1
import a from 'class.js'
a.x()
然而,如果我想在初始化实例时向类传递一个参数,我该怎么做呢

// class.js
class A {
  constructor(spec) {}
  method x
}
export default new A(spec);
此外,将
spec
传递到所有文件将是非常多余的


有没有一种方法我只能在一个地方初始化它一次,但使它成为单例的?

你可以使用一个对象,而不是一个实际上是单例的类。

你不能在
导入
语句期间传递参数。为什么不直接在class.js中导入
spec
?这样,每次导入
一个
,它就已经用所需的构造函数参数启动了

//class.js
从“config.js”导入规范
甲级{
构造函数(规范){}
方法十
}
导出默认的新等级库(等级库);

是否有ES6+的方法?对象包含在ES6+中。@Keming为什么没有?如果你可以将它导入到
use1
use2
,为什么你不能将它导入到
class.js
?因为class.js实际上是一个依赖库,我需要尽快将规范传递给itAs,因为你可以从不同的地方传递不同的规范,它不再是一个单一的。不要使用,反正它们是反模式。@Bergi我正在传递相同的规范,只是需要从不同的文件传递它。然后,您应该将规范导入到实例化单例的文件中,无论是
class.js
还是单独的共享文件。
// 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()