我在使用VSC的大型項目中發生了幾次奇怪的錯誤。在特定範圍內丟失屬性的單例類
我有一個引用一堆類的單例類,其中一些類引用了那個單例類。在該項目的開發過程中,有兩次這些類在運行時完全失去了singleton類的屬性和方法。
比如我會做(比方說單例類是A):
在C類:
A.someMethod()//no problem
在課堂d:
A.someMethod()//error A is an object but has no properties or method
在E類:
A.someMethod();//no problem
因此,出於某種原因機智在D的範圍內,A是一個空對象。
這發生了2個類,每次我通過刪除項目中任何位置的所有這些類的引用來修復它,然後重命名這些類的模塊,註釋掉這些類中的所有代碼,然後正確地重命名該模塊,編譯然後所有都是固定的,我可以添加這些類的引用並恢復代碼,現在單例類引用不再是空的。
所以這很奇怪,任何人都有這方面的經驗?這是一個編譯器錯誤或一些Javascript怪異?
好吧,我做了小班嘗試和我達成同樣的問題:
class A
{
constructor()
{
new B();
C;
}
public static getClassA():A
{
return new A();
}
}
如果B和C都具有一個引用那麼參考A是一個空對象(甚至不是一個類)。如果B和C被A的靜態方法引用(所以它不僅僅是一個構造函數),顯然也會發生同樣的情況。不確定成員方法。即使我沒有實例化C類,C類也會遇到同樣的問題。
對此問題的更新:問題是任何在構造函數中引用另一個類(以某種方式引用)的類,以及以任何方式直接引用第一個類(import,static,instantiation等)的其他類引用第一個類在運行時完全清空,所有屬性/方法成員或靜態都沒有了。
我認爲你需要添加代碼來顯示你的應用程序的流程:你什麼時候實例化類c,d,e? A看起來像什麼,你是如何實現單身人士的? – Kokodoko
這是很多代碼,我會看看如果我可以用簡單的類來重現它。 – BotMaster