簡體   English   中英

JS 聲明 Class 並為 Singleton 實例化

[英]JS Declare Class & Instantiate For Singleton

我剛剛意識到您可以使用 new 聲明和構造 class 的new實例。 這對於 singleton 的使用感覺非常優雅。 這是有效的嗎? 如果是這樣,有什么缺點嗎?

var c = new class C {

    constructor () {
        this.foo = 'bar';
    }

}

console.log(c.foo);
console.log(c.constructor.name);
console.log(c.constructor.prototype);

編輯

console.log(C); // Uncaught ReferenceError: C is not defined

如果您的項目很小,Singleton 提供了很好的解決方案。 但這個項目更大,更復雜。 那么你的 singleton class 就會混亂。 您幾乎可以追逐 singleton 中的狀態,來自某個地方的奇怪變量每天都在增加。

一個好主意是放棄 class 並使用功能方式。 給函數所需的 arguments 並遞歸傳遞下一個函數。 像這樣:

const main = () => {
  const setting = {...}
  const resultA = funcA(setting)
  funcB(setting, resultA)
  funcC(resultA)
}

這種方式有助於讓我們知道 function 需要設置什么。 例如, funcAfuncB需要setting ,而funcC不需要。 更進一步,數據庫實例或網絡資源包含在其中,您可以詳細控制各種效果。 細節通過“依賴注入”找到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM