for..in 语句

for (variableIterant in object) {
statement(s);
} 

迭代对象的属性或数组中的元素,并对每个属性或元素执行 statement。对象的方法不能由 for..in 动作来枚举。

有些属性不能由 for..in 动作来枚举。例如,不能枚举影片剪辑属性,例如 _x_y。在外部类文件中,和实例成员不同的是,静态成员是不能枚举的。

for..in 语句迭代所迭代对象的原型链中对象的属性。首先枚举该对象的属性,接着枚举其直接原型的属性,然后枚举该原型的原型的属性,依次类推。它以反向索引顺序迭代各个属性。for..in 语句不会将相同的属性名枚举两次。如果 child 对象有原型 parent,并且两者都包含属性 prop,则对 child 调用的 for..in 语句将枚举来自 childprop,而忽略 parent 对象中的该属性。

如果只执行一条语句,则用来括起要由 for..in 语句执行的语句块的花括号 ({}) 是不必要的。

如果在一个类文件(外部 AS 文件)中编写一个 for..in 循环,则实例成员对于该循环不可用,而静态成员则可用。然而,如果在一个 FLA 文件中为类的实例编写一个 for..in 循环,则实例成员在循环中可用,而静态成员不可用。

可用性:ActionScript 1.0、Flash Player 5

参数

variableIterant:String ― 要作为迭代变量的变量的名称,迭代变量引用对象的每个属性或数组中的每个元素。

示例

下面的示例使用 for..in 迭代对象的属性:

var myObject:Object = {firstName:"Tara", age:27, city:"San Francisco"}; 
for (var prop in myObject) { 
 trace("myObject."+prop+" = "+myObject[prop]); 
} 
//output 
myObject.firstName = Tara 
myObject.age = 27 
myObject.city = San Francisco

下面的示例使用 for..in 迭代数组的元素:

var myArray:Array = new Array("one", "two", "three"); 
for (var index in myArray) 
 trace("myArray["+index+"] = " + myArray[index]); 
// output: 
myArray[2] = three 
myArray[1] = two 
myArray[0] = one

下面的示例将 typeof 运算符与 for..in 结合使用以迭代特定类型的子级:

for (var name in this) { 
 if (typeof (this[name]) == "movieclip") { 
 trace("I have a movie clip child named "+name); 
 } 
}

注意:如果有多个影片剪辑,则输出结果由这些剪辑的实例名称构成。

下面的示例枚举影片剪辑的子级,并将每个子级发送到其各自时间轴的第 2 帧。RadioButtonGroup 影片剪辑是具有以下三个子级的父级:_RedRadioButton__GreenRadioButton_,_BlueRadioButton_

for (var name in RadioButtonGroup) { RadioButtonGroup[name].gotoAndStop(2); }

Flash CS3

 

评论添加到页面后给我发送电子邮件 | 评论报告

当前页: http://livedocs.adobe.com/flash/9.0_cn/main/00001323.html