Flash / Flex / ActionScript/Class/Dynamic object
Содержание
- 1 Call setPropertyIsEnumerable in dynamic object
- 2 Create dynamic class
- 3 Dynamic ActionScript: All dynamic instance variables are untyped and public
- 4 Dynamically Adding New Behavior to an Instance
- 5 Dynamic References to Variables and Methods
- 6 Making Lookup Tables with Object Literals
- 7 Processing Dynamic Instance Variables with for-each-in and for-in Loops
- 8 Using Dynamic Instance Variables to Create Lookup Tables
Call setPropertyIsEnumerable in dynamic object
<source lang="java">
package{
import flash.display.Sprite; public class Main extends Sprite{ public function Main(){
var info:Object = new Object( ); info.city = "Toronto"; info.country = "Canada"; info.setPropertyIsEnumerable("city", false); for (var detailName:* in info) { trace(info[detailName]); } } }
}
</source>
Create dynamic class
<source lang="java">
dynamic class Employee {
public var startDate:Date; private var age:int;
} class Report {
public function Report (employee:Employee) { employee.doReport = function ( ):void { trace(this.startDate); // Access to public variable allowed trace(this.age); // Access to private variable denied } }
}
</source>
Dynamic ActionScript: All dynamic instance variables are untyped and public
<source lang="java">
package{
import flash.display.Sprite; public class Main extends Sprite{ public function Main(){ var person:Person = new Person( ); person.eyeColor = "brown"; trace(person.eyeColor); // Displays: brown trace(person.age); // Displays undefined because the person object } }
} dynamic class Person { }
</source>
Dynamically Adding New Behavior to an Instance
<source lang="java">
package{
import flash.display.Sprite; public class Main extends Sprite{ public function Main(){ var info:Object = new Object( ); info.city = "Toronto"; info.country = "Canada"; info.getAddress = function ( ):String { return this.city + ", " + this.country; } trace(info.getAddress( )); } }
}
</source>
Dynamic References to Variables and Methods
<source lang="java">
package{
import flash.display.Sprite; public class Main extends Sprite{ public function Main(){ var info:Object = new Object( ); info["city"] = "Toronto"; info["country"] = "Canada"; var detail:String = "city"; trace(info[detail]); // Displays: Toronto } }
}
</source>
Making Lookup Tables with Object Literals
<source lang="java">
package{
import flash.display.Sprite; public class Main extends Sprite{ public function Main(){
var info:Object = {city:"Toronto", country:"Canada"}; //The preceding code is identical to the following code: var info:Object = new Object( ); info.city = "Toronto"; info.country = "Canada"; } }
}
</source>
Processing Dynamic Instance Variables with for-each-in and for-in Loops
<source lang="java">
for each (variableOrElementValue in someObject) {
statements
}
package{
import flash.display.Sprite; public class Main extends Sprite{ public function Main(){ var info:Object = new Object( ); info.city = "Toronto"; info.country = "Canada"; for each (var detail:* in info) { trace(detail); } } }
}
</source>
Using Dynamic Instance Variables to Create Lookup Tables
<source lang="java">
package{
import flash.display.Sprite; public class Main extends Sprite{ public function Main(){ var meal:Object = new Object( ); meal.t = "t"; meal.b = "b"; meal.c = "c"; trace(meal); //[object Object] } }
}
</source>