PDA

Просмотр полной версии : Можно ли создавать массив прямо в объявлении переменной класса?


Kuruki
31.10.2009, 20:57
Раньше всегда так и делал, но сегодня вдруг наткнулся на такое
class MyClass
{
private var items:Array = [];

public function MyClass()
{
for (var i = 0; i < 3; i++)
{
this.items.push('item');
}

trace(this.items.length);
}
}

for(var i:Number = 0; i < 2; i++)
{
var m:MyClass = new MyClass();
}
Выдает3
6

Стоит перенести создание в конструктор - все ок. С чем это связано?

udaaff
31.10.2009, 21:10
Это баг AS2. Инициализировать массивы и объекты нужно в конструкторе. Баг заключается в том, что в данном случае, элементы добавляются в массив прототипа MyClass.

etc
31.10.2009, 21:45
Не создавайте массивы вне методов класса.

Kuruki
31.10.2009, 22:06
Спасибо за разъяснения! Все дело в лени :)

dimarik
01.11.2009, 19:31
Уточню. Создавать вне методов и конструктора в AS2 можно только примитивные типы данных.