Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 创建对象时交叉引用js对象变量 总结:_Javascript_Extjs_This Pointer - Fatal编程技术网

Javascript 创建对象时交叉引用js对象变量 总结:

Javascript 创建对象时交叉引用js对象变量 总结:,javascript,extjs,this-pointer,Javascript,Extjs,This Pointer,我想知道这样做是否可行: {a: 'A',b: this.a} …通过使用其他指针,如{a:a',b:self.a}或{a:a',b:own.a}或其他任何东西 完整问题: 我正在尝试使用Ext.extend扩展MyBaseModule,需要交叉引用传递给Ext.extend()的扩展对象中的值 因为我还不在MyModule的上下文中,所以我不能使用它来引用对象(参见下面第12行的示例)。有没有其他方法可以在不首先创建对象的情况下引用这样的值 1 MyModule = Ext.extend(M

我想知道这样做是否可行:

{a: 'A',b: this.a}
…通过使用其他指针,如
{a:a',b:self.a}
{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);

您可以逐步构建对象:

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
    }]
};

您可以逐步构建对象:

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
    }]
};

我意识到,当我想要访问对象的属性时,对象还没有被创建,所以我要寻找的是JavaScript语言中某种内置的助手功能,告诉它在创建对象后解析引用。。。隐马尔可夫模型。。。我看得越多,就越不可能存在这样的功能。我意识到,当我想要访问对象的属性时,对象还没有创建,所以我要寻找的是JavaScript语言中某种内置的帮助器功能,告诉它在创建对象后解析引用。。。隐马尔可夫模型。。。我看得越多,就越不可能存在这样的功能。我想没有别的办法了。我希望避免像这样分割对象定义,但我可能只是有点困难…我想没有其他办法了。我希望避免像这样分割对象定义,但我可能只是有点困难。。。