为什么这个变量引用不起作用?

时间:2011-02-23 18:52:17

标签: javascript extjs

this.prefixMonday [0]存在于当前范围内 this.prefixMonday是一个包含三个复选框的数组 这是在面板

的扩展的initComponent方法中
this.weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];

for(var i = 0; i<7; i++){
   this['prefix' +this.weekdays[i] +'[0]'].on('check',this.someFunction, this);
}

Firebug说找不到:这个['前缀'+ this.weekdays [i] +'[0]']

3 个答案:

答案 0 :(得分:2)

我很确定你必须访问

this['prefix' +this.weekdays[i]][0]

否则JavaScript将搜索一个完全匹配字符串'prefixMonday [0]'的密钥 我不认为这是你想要的。为了使其更具可读性,您可能希望使用辅助变量来存储名称:

for(var i = 0; i<7; i++){
    var key = 'prefix' +this.weekdays[i];
    this[key][0].on('check',this.someFunction, this);
}

答案 1 :(得分:2)

this.prefixMonday[0]不等同于this['prefixMonday[0]']。它等同于this['prefixMonday'][0]。试试

for(var i = 0; i<7; i++){
   this['prefix' +this.weekdays[i]][0].on('check',this.someFunction, this);
}

答案 2 :(得分:1)

this['prefix' +this.weekdays[i] +'[0]']

这会产生类似

的东西
this['prefixWednesday[0]']

请注意,数组引用位于字符串中,因此您需要查找包含“[0]”作为文字文本的键。你确定你不会更像是:

this['prefixWednesday'][0]...

代替?