當一個類有很多名稱相似的屬性(如prop1,prop2,prop3……),或是有很多名稱相似的方法(如fun1,fun2,func3……),那麼如何用一個for()循環循環調用這些屬性和方法呢?
可以用如下的方法實作:
package {
import flash.display.Sprite;
public class Test extends Sprite
{
private var prop1:String = "foo";
private var prop2:String = "bar";
public function Test():void
{
for (var i:int=1; i<3; i++)
{
trace(this["prop"+i]);
}
for (var j:int=1; j<3; j++)
{
this["fun"+j].apply(this, [j,"字串"+j]);
}
}
private function fun1(i:int, str:String):void
{
trace("fun1被調用!");
trace(i);
trace(str);
}
private function fun2(i:int, str:String):void
{
trace("fun2被調用!");
trace(i);
trace(str);
}
}
}
輸出結果:
foo
bar
fun1被調用!
1
字串1
fun2被調用!
2
字串2
如果要循環調用其它類對象的屬性、方法,比如在類Test中循環調用類Test2執行個體對象的屬性、方法。可以用下面的方法實作:
Test.as
package {
import flash.display.Sprite;
public class Test extends Sprite
{
public function Test():void
{
var test2:Test2 = new Test2();
for (var i:int=1; i<3; i++)
{
trace(test2["prop"+i]);
}
for (var j:int=1; j<3; j++)
{
test2["fun"+j].apply(test2, [j,"字串"+j]);
}
}
}
}
Test2.as
package
{
public class Test2
{
public var prop1:String = "test2中的foo";
public var prop2:String = "test2中的bar";
public function Test2():void
{
}
public function fun1(i:int, str:String):void
{
trace("test2中的fun1被調用!");
trace(i);
trace(str);
}
public function fun2(i:int, str:String):void
{
trace("test2中的fun2被調用!");
trace(i);
trace(str);
}
}
}
輸出結果:
test2中的foo
test2中的bar
test2中的fun1被調用!
1
字串1
test2中的fun2被調用!
2
字串2