2011-02-23 88 views
0

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

萤火虫说,它不能找到的:这个[ '前缀' + this.weekdays [I] + '[0]']

+0

这是什么? – 2011-02-23 18:55:58

+0

initComponent在扩展中 – ppecher 2011-02-23 18:56:35

+0

你能发布声明'this.prefixMonday [0]'的代码吗? – Annabelle 2011-02-23 18:56:38

回答

2

我敢肯定你有存取权限

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

否则的JavaScript将搜索正是一个关键STRI ng'prefixMonday [0]'和 我不认为这是你想要的。为了使这个更具可读性,你可能需要使用一个辅助变量来存储名称:

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

这将创造的东西,看起来像

this['prefixWednesday[0]'] 

注意阵列基准距离字符串,所以你正在寻找一个包含'[0]'作为文本文本的键。你确定你不会更喜欢这样的东西:

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

改为?

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