我使用ExtJs 4.1和DeftJs。
某些类使用类似的构造函数定义:
Ext.define( 'A.helper.Report', {
config: {
conf : null,
viewMain : null
},
constructor: function( oConfig ) {
this.conf = oConfig.conf;
this.viewMain = oConfig.viewMain;
this.initConfig( oConfig );
}
...
现在,我创建了这个类的几个实例:
var class1 = Ext.create( 'A.helper.Report', {
conf: someValue,
viewMain: someObject
} );
var class2 = Ext.create( 'A.helper.Report', {
conf: otherValue,
viewMain: otherObject
} );
使用这些实例时,虽然为其提供了不同的oConfig
数据,但class1
和class2
现在都拥有第二个oConfig
的数据。
因此,在两个实例中调用this.conf
时,我会得到someValue
。
如何保留已创建实例的数据?
解决方案:
我写了
Ext.define( 'A.helper.Report', {
...
references: {}
...
并将我的实例放在那里,覆盖旧实例。
切换到references: null
帮助。
...
答案 0 :(得分:3)
小心不要弄乱原型对象......
重写回答
你这样做是错误的。
请参阅此 JSFiddle
Ext.define('A.helper.Report', {
config: {
conf : null,
viewMain : null
},
constructor: function(cfg) {
this.initConfig(cfg);
}
});
var class1 = Ext.create('A.helper.Report',{
conf: 66,
viewMain: 'Bear'
});
var class2 = Ext.create('A.helper.Report',{
conf: 88,
viewMain: 'Eagle'
});
class1.getConf(); // 66
class1.getViewMain(); // Bear
class2.getConf(); // 88
class2.getViewMain(); // Eagle