我很难从ExtJS 4.1中的单例类重写构造函数。我有一个定义的覆盖,但到我的覆盖语句被处理时,构造函数已经执行。ExtJS如何覆盖单例构造函数
Ext.define('singleton', {
singleton: true,
constructor: function() {
alert('replace me');
}
});
我很难从ExtJS 4.1中的单例类重写构造函数。我有一个定义的覆盖,但到我的覆盖语句被处理时,构造函数已经执行。ExtJS如何覆盖单例构造函数
Ext.define('singleton', {
singleton: true,
constructor: function() {
alert('replace me');
}
});
重写一个单独的构造函数没有意义,单身是一类就是很早就在ExtJS的执行变成了自己的一个实例。这意味着你正试图覆盖一个类的实例而不是类本身。
我可以推荐,无论你想要做的单身是在类定义中的一个单独的方法完成,你可以在Ext.onReady()或你的应用程序实例化非常早期调用。
不能覆盖单身类,这是真的,但是你可以重写单个实例:
Ext.define('singleton', {
singleton: true,
constructor: function() {
// does whatever
}
});
Ext.define('singletonOverride', {
override: 'singleton',
// adding new property
foo: 'bar',
// adding new method
baz: function() {},
initSingletonOverride: function() {
// do whatever is needed
// to augment the singleton
// behavior the way you want
}
},
function() {
// `this` is the singleton instance
this.initSingletonOverride();
});
请这一切都是绒毛归结为JavaScript对象的想法。一个类是一个对象,而一个类实例是另一个对象。你可以重写它们中的任何一个,或两者;班级系统在这里帮助你不要失去什么你在做什么。
我同意,不幸的是这不是我的代码!我希望现在有一个解决方案。 – mvd
您仍然可以通过在app init之后将更改注入单例中来实现所需的结果。 – Reimius