ExtJs - 构造函数覆盖我的实例

时间:2013-01-22 14:58:12

标签: extjs extjs4.1

我使用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数据,但class1class2现在都拥有第二个oConfig的数据。

因此,在两个实例中调用this.conf时,我会得到someValue

如何保留已创建实例的数据?


解决方案:

我写了

Ext.define( 'A.helper.Report', {
   ... 
  references: {}
  ...

并将我的实例放在那里,覆盖旧实例。

切换到references: null帮助。

...

1 个答案:

答案 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