Это могло бы быть случаем, где CSLA применим. Это было разработано для оказания сложной поддержки отмены объектам в приложениях Windows Forms.
Я, вероятно, возьму flak для этого, но да, C # по большому счету ответ Microsoft на Java. Это язык, который они могут расширить любым способом по своему выбору (в отличие от Java, где их осуждали за его расширение неутвержденными способами). Он имеет важные особенности Java: управление памятью и большая системная библиотека. Он похож на C ++ или похож на C в той мере, в какой это необходимо, чтобы соблазнить разработчиков C ++ и C, которые еще не являются поклонниками Java.
Я бы рекомендовал вам использовать метод hasOwnProperty
, чтобы гарантировать, что свойство существует в самом объекте, а не где-то в цепочке прототипов:
for (var name in object) {
if (object.hasOwnProperty(name)) {
//
}
}
похоже, вы пытаетесь получить доступ к свойствам объекта по имени, а не по значению здесь. индекс, в данном случае «0», присваивается «a» в цикле for / in.
то, что вы хотите сделать, это получить доступ к значению элемента массива, например :ctors [a].
попробуйте следующее:
for(var a in actors) { // a=0 the first time around the loop,
actor = actors[a]; // same thing as actors[0];
actor.xpos += actor.xvel;
actor.ypos += actor.yvel;
}
for (x in y)
конструкция выполняет итерацию по индексам массива, а не по его элементам.
Попробуйте использовать актеры [a] .xpos
вместо только a.xpos
.
Подробнее о циклах for-in в JavaScript см. Здесь.