Jump to content
  • 0

массив объектов


hedgehog
 Share

Question

Здравствуйте. Только осваиваю JS и сталкиваюсь с некоторыми трудностями. У меня есть прототип theBox с набором некоторых свойств и методом draw(), я хочу создать n объектов, наследующих этот прототип и вызывать для каждого из них draw() в цикле. Инициализирую массив:


var boxArray = [];
boxArray.push( new theBox("x") );
boxArray.push( new theBox("y") );
boxArray.push( new theBox("z") );

Далее пытаюсь вызвать draw() в цикле for in:


for (boxItem in boxArray) {
boxItem.draw();
}

Результат - болт на 24 в виде ошибки "boxItem не имеет метода draw". Соорудил костыльное (на мой взгляд), но работающее решение:


var i = 0;
for (boxItem in boxArray) {
boxArray[i].draw();
i++;
}

Собственно, вопрос: как правильно вызвать метод для каждого объекта в массиве?

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Результат - болт на 24 в виде ошибки "boxItem не имеет метода draw". Соорудил костыльное (на мой взгляд), но работающее решение:

Собственно, вопрос: как правильно вызвать метод для каждого объекта в массиве?

Не удивительно, так как for in перебирает свойства объекта Array.

Используйте for ( var i = 0, l = boxArray.length; i<l; i++ ) {}

  • Like 1
Link to comment
Share on other sites

  • 0
Не удивительно, так как for in перебирает свойства объекта Array.

Ага, примерно понимаю, о чем речь.

Используйте for ( var i = 0, l = boxArray.length; i<l; i++ ) {}

Спасибо. Теперь мой код будет на 0.1% меньше напоминать индусский:)

Link to comment
Share on other sites

  • 0
Не удивительно, так как for in перебирает свойства объекта Array.

Ага, примерно понимаю, о чем речь.

Используйте for ( var i = 0, l = boxArray.length; i<l; i++ ) {}

Спасибо. Теперь мой код будет на 0.1% меньше напоминать индусский:)

Пример для изучения


var arr = [];
arr.x = "x";
arr[0] = 0;
for( var i in arr ) { alert( arr[i] ) };

Вы спросите, откуда взялось все то, что вы наблюдаете? Массив - один из подвидов объектов


var arr = [];
alert( typeof arr ); //object

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy