[英]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.