2011-02-23 86 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); 
}