我在使用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