Как все чаще менять имя переменной внутри цикла - PullRequest
3 голосов
/ 20 июля 2011

Я пытаюсь сделать цикл for, который зависит от переменной objNumber. Он делает так много объектов и называет их различными переменными, например:

for (var i = 1; i <= objNumber; i++){
    var myElement = new Element('div', {id: 'slot'+i, class: 'slot'});
    var myObject+i = new myClass
}

Я хочу сделать это, чтобы я мог отслеживать имена всех объектов и легко ссылаться на них.

Каждый myObject создаст еще один «дочерний» объект. Если я оставлю все объекты с одинаковым номером, я смогу отслеживать все объекты.

Это лучший способ сделать это? Или это невозможно?

Ответы [ 3 ]

4 голосов
/ 20 июля 2011

Просто используйте массив:

var myObjects = [];
for (var i = 1; i <= objNumber; i++){

        var myElement = new Element('div', {id: 'slot'+i, class: 'slot'});
        var myObjects[i] = new myClass
 }
0 голосов
/ 20 июля 2011

Лучше всего использовать массив:

var myArray = new Array();
for (var i = 0; i < objNumber; i++){

        var myElement = new Element('div', {id: 'slot'+i, class: 'slot'});
        myArray.push(new myClass());

 }

В качестве альтернативы вы можете использовать следующее:

 var myCollectionObj = {};
 for (var i = 1; i <= objNumber; i++){

        var myElement = new Element('div', {id: 'slot'+i, class: 'slot'});
        myCollectionObj["myObject"+i] = new myClass();

 }
0 голосов
/ 20 июля 2011

Для этого вы можете использовать оператор eval, но лучше использовать ассоциативный массив, где ключом является имя переменной.Делая это таким образом, вы можете легко перебирать объекты, которые вы создали, и это создает более читаемый код.

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