[英]Initiate single instance from a constructor and use it as static method in another class
我在整个应用程序中使用了一类实用程序,其中包含一种格式化数字的方法
class Utils {
static numberFormater () {
return new Intl.NumberFormat('en-US')
}
}
问题是,每当我调用它时,它将返回新的numberFormat实例(这会影响代码的性能)
我想创建一个实例并在每次调用此方法时使用它
为什么不简单地直接创建数字格式化程序的实例呢? 甚至不需要是静态属性:
class Util { constructor () { this.numberFormatter = new Intl.NumberFormat('en-US'); } } const util = new Util; const formatter = util.numberFormatter; const formatter2 = util.numberFormatter; console.log(formatter1 === formatter2);
尝试添加用于初始化numberFormater
的构造函数。
class Util { constructor(locale) { this.numberFormater = new Intl.NumberFormat(locale); } static numberFormater() { return this.numberFormatter; } } var a = new Util('en-US'); console.log(a.numberFormater.format);
如果要创建一个实例并每次使用它,可以使用Singleton模式 。
单例设计模式解决了以下问题:
- 如何确保一个类只有一个实例?
- 如何轻松访问类的唯一实例?
- 类如何控制其实例化?
- 如何限制一个类的实例数?
您可以阅读有关模式和javascript的更多信息:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.