for..in statement

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

Iterates over the properties of an object or elements in an array and executes the statement for each property or element. Methods of an object are not enumerated by the for..in action.

Some properties cannot be enumerated by the for..in action. For example, movie clip properties, such as _x and _y, are not enumerated. In external class files, static members are not enumerable, unlike instance members.

The for..in statement iterates over properties of objects in the iterated object's prototype chain. Properties of the object are enumerated first, then properties of its immediate prototype, then properties of the prototype's prototype, and so on. The for..in statement does not enumerate the same property name twice. If the object child has prototype parent and both contain the property prop, the for..in statement called on child enumerates prop from child but ignores the one in parent.

The curly braces ({}) used to enclose the block of statements to be executed by the for..in statement are not necessary if only one statement will execute.

If you write a for..in loop in a class file (an external AS file), then instance members are not available for the loop, but static members are. However, if you write a for..in loop in a FLA file for an instance of the class, then instance members are available but static ones are not.

Availability: ActionScript 1.0; Flash Lite 2.0

Parameters

variableIterant:String - The name of a variable to act as the iterant, referencing each property of an object or element in an array.

Example

The following example shows using for..in to iterate over the properties of an object:

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

The following example shows using for..in to iterate over the elements of an array:

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

The following example uses the typeof operator with for..in to iterate over a particular type of child:

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

Note: If you have several movie clips, the output consists of the instance names of those clips.

The following example enumerates the children of a movie clip and sends each to Frame 2 in their respective Timelines. The RadioButtonGroup movie clip is a parent with several children, _RedRadioButton_, _GreenRadioButton_, and _BlueRadioButton_.

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