Квадратные скобки могут использоваться для доступа к свойствам Object
(всего) точно так же, как вы делали выше:
object[propertyName]
Или установите свойства, предполагая, что ваш класс либо dynamic
, либо уже имеет свойство, которое вы пытаетесь установить:
object[propertyName] = 10;
С Объектом вы фактически можете использовать цикл for(String in Object)
для вывода всех требуемых свойств:
var object:Object = {
test: "string",
another: 5
};
for(var i:String in object)
{
trace(i + ": " + object[i]);
}
Что касается вашего текущего кода, реструктурируйте его:
public class Test extends Sprite
{
private var a0:String = 'a0';
private var a1:String = 'a1';
private var a2:String = 'a2';
public function Test()
{
testFun();
}
public function testFun():void
{
for(var i:uint = 0; i < 3; i += 1)
{
trace(this['a'+i]);
}
}
}
Если вы должны сохранить свою внутреннюю функцию, проанализируйте в ней ссылку на ваш текущий экземпляр Test
:
var testFun:Function = function(subject:Test):void
{
for(var i:uint = 0; i < 3; i += 1)
{
trace(subject['a'+i]);//how to access instance variables?
}
};
А потом:
testFun(this);