1

概括:

我想知道是否可以做这样的事情:

{a: 'A',b: this.a}

...通过使用其他指针,例如{a: 'A',b: self.a}or{a: 'A',b: own.a}或其他任何东西...

完整问题:

我正在尝试使用 Ext.extend 扩展 MyBaseModule,并且需要交叉引用传递给 Ext.extend() 的扩展对象中的值。

由于我还没有在 MyModule 的上下文中,我无法使用来引用对象(参见下面第 12 行的示例)。有没有其他方法可以在不首先创建对象的情况下引用这样的值?

1 MyModule = Ext.extend(MyBaseModule, {
2   dataStores: {
3       myDataStore: new Ext.data.Store({...})
4   },
5
6   myGridDefinition: {
7       id:                 'myGridDefinitionPanel',
8       bodyBorder:         false,
9       items: [{
10          xtype:          'grid',
11          id:             'myGridDefinitionGrid',
12          store:          this.dataStores.myDataStore
13      }]
14  }
15 });

或者以下是唯一的解决方案?如果可能的话,我想避免这种情况,因为我发现它对于大型扩展定义的可读性较差。

1 var extensionObject = {
2   dataStores: {
3       myDataStore: new Ext.data.Store({...})
4   },
5
6   myGridDefinition: {
7       id:                 'myGridDefinitionPanel',
8       bodyBorder:         false,
9       items: [{
10          xtype:          'grid',
11          id:             'myGridDefinitionGrid'
12      }]
13  }
14 };
15
16 extensionObject.locationsGrid.items[0].store = extensionObject.dataStores.locations;
17
18 MyModule = Ext.extend(MyBaseModule, extensionObject);
4

1 回答 1

1

您可以逐步构建对象:

var dataStores = {
    myDataStore: new Ext.data.Store({...})
};

var extensionObject = {
    dataStores: dataStores,
    myGridDefinition: {
        id: 'myGridDefinitionPanel',
        bodyBorder: false,
        items: [{
            xtype: 'grid',
            id: 'myGridDefinitionGrid',
            store: dataStores.myDataStore
        }]
    }
};

另一种方法:

var extensionObject = {
    dataStores: {
        myDataStore: new Ext.data.Store({...})
    }
};

extensionObject.myGridDefinition = {
    id: 'myGridDefinitionPanel',
    bodyBorder: false,
    items: [{
        xtype: 'grid',
        id: 'myGridDefinitionGrid',
        store: extensionObject.dataStores.myDataStore
    }]
};
于 2010-06-14T12:41:18.667 回答