我想创建一个只有一个实例(单例)的实用程序类,因此我创建了一个名为 getInstance()的静态方法,它将创建一个实例并将其返回给我。
我在代码下方发布了一条评论,其中包含错误和错误说明。 请告诉我代码的错误。
任何帮助表示感谢。
Ext.define('MyApp.utility.EventManager',{
extend:'Ext.util.Observable',
instance: new MyApp.utility.EventManager(), //error as undefined EventManager property
statics:{
// instance: new MyApp.utility.EventManager(),
getInstance:function(){
if(!this.self.instance){
this.self.instance=Ext.create('MyApp.utility.EventManager');
return this.self.instance;
}
else{
return this.self.instance;
}
},
},
constructor:function(){
this.addEvents(
'success'
);
},
});
答案 0 :(得分:1)
很明显,当您在类的定义中使用它时,您会在new MyApp.utility.EventManager()
中收到错误。在您define
该课程时,它尚不存在,因此您无法使用new
对其进行实例化。
解决方案很简单,因为单例类已经是Ext
框架的一个特性。使用内置的singleton
-config定义您的课程。
Ext.define('MyApp.utility.EventManager',{
extend:'Ext.util.Observable',
singleton: true,
constructor:function(){
this.addEvents(
'success'
);
},
});
您不需要getInstance
方法,因为对象MyApp.utility.EventManager
始终是实例化的单例。