Почему эта ссылка на переменную не работает? - PullRequest
0 голосов
/ 23 февраля 2011

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 ['prefix' + this.weekdays [i] + '[0]']

Ответы [ 3 ]

2 голосов
/ 23 февраля 2011

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 голосов
/ 23 февраля 2011

Я почти уверен, что вам нужно получить доступ

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 голос
/ 23 февраля 2011
this['prefix' +this.weekdays[i] +'[0]']

Это создаст нечто, похожее на

this['prefixWednesday[0]']

Обратите внимание, что ссылка на массив находится внутри строки, поэтому вы ищете ключ, который содержит '[0]' в качестве литерального текста. Вы уверены, что не хотели бы что-то более похожее на:

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

вместо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...