ActionScript 3.0 Language Specification 1 Tutorial introduction 1.1 Hello world 1.2 Expressions 1.3 Statements 1.4 Variables 1.5 Functions 1.6 Classes 1.7 Interfaces 1.8 Packages 1.9 Namespaces 2 Design perspective 2.1 Compatibility with existing programs 2.2 Compatibility with existing object models 2.3 Controlling the visibility of names 2.4 Choosing between reliability and flexibility 3 Phases and dialects of interpretation 3.1 Parsing 3.2 Verifying 3.2.1 Compile time constant expressions 3.3 Evaluating 3.4 Strict verification 3.4.1 Type errors 3.4.2 Strict errors 4 Definitions 4.1 Bound method 4.2 Class 4.3 Class method 4.4 Class variable 4.5 Delegate 4.6 Final 4.7 Function 4.8 Function Closure 4.9 Instance 4.10 Instance method 4.11 Instance variable 4.12 Method 4.13 Object 4.14 Property 4.15 Prototype 4.16 Sealed 4.17 Slots 4.18 Trait 5 Names 5.1 Definition names 5.2 Reference names 5.3 Name lookup 5.3.1 Object references 5.3.2 Lexical references 6 Types 6.1 Type operators 6.1.1 Operator is 6.1.2 Operator as 6.2 Type Conversions 6.3 Type annotations 6.4 Runtime versus compile time type 6.5 Untyped versus typed properties 6.6 Object types 6.7 Class types 6.8 Interface types 6.9 Strict dialect and static types 7 Variables 7.1 Variable modifiers 7.2 Variable types 8 Functions 8.1 Function modifiers 8.2 Function signatures 8.3 Function objects 9 Classes 9.1 Class modifiers 9.2 Class objects 9.2.1 Prototypes 9.2.2 Traits 9.2.3 Methods 9.2.4 Slots 9.2.5 Instances 9.2.6 Inheritance 9.2.7 Scopes 9.3 Class property attributes 9.3.1 Static attribute 9.3.2 Prototype attribute 9.3.3 Access control namespace attributes 9.3.4 User-defined namespace attributes 9.4 Class body 9.5 Class variables 9.5.1 Static variables 9.5.2 Instance variables 9.6 Class methods 9.6.1 Constructor methods 9.6.2 Static methods 9.6.3 Instance methods 9.6.4 Accessor methods 9.6.5 Inheriting instance methods 9.6.6 Bound methods 10 Interfaces 10.1 Interface types 10.2 Interface methods 10.2.1 Visibility of interface methods 10.2.2 Inheritance of interface methods 10.3 Interface example 11 Packages 11.1 Package namespace 11.2 Package members 11.2.1 Package property attributes 11.3 Package import 11.3.1 Single name aliases 11.4 Unnamed package 12 Namespaces 12.1 Namespace values 12.2 Namespaces as attributes 12.3 Namespaces as qualifiers 12.4 Open namespaces 12.5 Namespace examples 12.5.1 Access control 12.5.2 Version control 12.5.3 Vocabulary control 13 Lexical Structure 13.1 Lexical 13.2 Syntactic 14 Expressions 14.1 Identifiers 14.2 Primary expressions 14.3 Reserved namespace expressions 14.4 Parenthesized expressions 14.5 Function expression 14.6 Object initialiser 14.7 Array initialiser 14.8 XML initialisers 14.9 Super expression 14.10 Postfix Expressions 14.11 New expressions 14.12 Property accessors 14.13 Query operators 14.14 Call expressions 14.15 Unary expressions 14.16 Binary expressions 14.16.1 Multiplicative expressions 14.16.2 Additive expressions 14.16.3 Shift expressions 14.16.4 Relational expressions 14.16.5 Equality expressions 14.16.6 Bitwise expressions 14.16.7 Logical expressions 14.17 Conditional expressions 14.18 Non-assignment expressions 14.19 Assignment expressions 14.20 List expressions 14.21 Type expressions 15 Statements 15.1 Empty statement 15.2 Expression statement 15.3 Super statement 15.4 Block statement 15.5 Labeled statement 15.6 Conditional statements 15.6.1 If statement 15.6.2 Switch statement 15.7 Iteration statements 15.7.1 Do-while statement 15.17.2 While statement 15.7.3 For statements 15.8 Continue statement 15.9 Break statement 15.10 With statement 15.11 Return statement 15.12 Throw statement 15.13 Try statement 15.14 Default XML namespace statement 16 Directives 16.1 Attributes 16.2 Import directive 16.3 Include directive 16.4 Use directive 17 Definitions 17.1 Variable definition 17.2 Function definition 17.2.1 Function body 17.2.2 Function signature 17.2.3 Parameter list 17.2.4 Result type 17.3 Class definition 17.3.1 Class attributes 17.3.2 Class name 17.3.3 Class inheritance 17.3.4 Class block 17.4 Interface definition 17.4.1 Interface attributes 17.4.2 Interface name 17.4.3 Interface inheritance 17.4.4 Interface block 17.5 Package definition 17.5.1 Package name 17.6 Namespace definition 17.7 Program definition 18 Errors 18.1 Class errors 18.2 Interface errors 18.3 Package errors 18.4 Namespace errors 19 Native objects 19.1 Global object 19.2 Object objects 19.3 Function objects 19.4 Array objects 19.5 String objects 19.6 Boolean objects 19.7 Number objects 19.8 Math object 19.9 Date objects 19.10 Error objects 20 Compatibility with the static profile 21 Compatibility with ECMAScript edition 3 21.1 this inside of nested function 21.2 No boxing of primitives 21.3 Assignment to const is a runtime exception 21.4 Class names are const 21.5 Array arguments object 22 Compatibility with E4X ActionScript 3.0 Language Specification 1 Tutorial introduction 1.1 Hello world 1.2 Expressions 1.3 Statements 1.4 Variables 1.5 Functions 1.6 Classes 1.7 Interfaces 1.8 Packages 1.9 Namespaces 2 Design perspective 2.1 Compatibility with existing programs 2.2 Compatibility with existing object models 2.3 Controlling the visibility of names 2.4 Choosing between reliability and flexibility 3 Phases and dialects of interpretation 3.1 Parsing 3.2 Verifying 3.2.1 Compile time constant expressions 3.3 Evaluating 3.4 Strict verification 3.4.1 Type errors 3.4.2 Strict errors 4 Definitions 4.1 Bound method 4.2 Class 4.3 Class method 4.4 Class variable 4.5 Delegate 4.6 Final 4.7 Function 4.8 Function Closure 4.9 Instance 4.10 Instance method 4.11 Instance variable 4.12 Method 4.13 Object 4.14 Property 4.15 Prototype 4.16 Sealed 4.17 Slots 4.18 Trait 5 Names 5.1 Definition names 5.2 Reference names 5.3 Name lookup 5.3.1 Object references 5.3.2 Lexical references 6 Types 6.1 Type operators 6.1.1 Operator is 6.1.2 Operator as 6.2 Type Conversions 6.3 Type annotations 6.4 Runtime versus compile time type 6.5 Untyped versus typed properties 6.6 Object types 6.7 Class types 6.8 Interface types 6.9 Strict dialect and static types 7 Variables 7.1 Variable modifiers 7.2 Variable types 8 Functions 8.1 Function modifiers 8.2 Function signatures 8.3 Function objects 9 Classes 9.1 Class modifiers 9.2 Class objects 9.2.1 Prototypes 9.2.2 Traits 9.2.3 Methods 9.2.4 Slots 9.2.5 Instances 9.2.6 Inheritance 9.2.7 Scopes 9.3 Class property attributes 9.3.1 Static attribute 9.3.2 Prototype attribute 9.3.3 Access control namespace attributes 9.3.4 User-defined namespace attributes 9.4 Class body 9.5 Class variables 9.5.1 Static variables 9.5.2 Instance variables 9.6 Class methods 9.6.1 Constructor methods 9.6.2 Static methods 9.6.3 Instance methods 9.6.4 Accessor methods 9.6.5 Inheriting instance methods 9.6.6 Bound methods 10 Interfaces 10.1 Interface types 10.2 Interface methods 10.2.1 Visibility of interface methods 10.2.2 Inheritance of interface methods 10.3 Interface example 11 Packages 11.1 Package namespace 11.2 Package members 11.2.1 Package property attributes 11.3 Package import 11.3.1 Single name aliases 11.4 Unnamed package 12 Namespaces 12.1 Namespace values 12.2 Namespaces as attributes 12.3 Namespaces as qualifiers 12.4 Open namespaces 12.5 Namespace examples 12.5.1 Access control 12.5.2 Version control 12.5.3 Vocabulary control 13 Lexical Structure 13.1 Lexical 13.2 Syntactic 14 Expressions 14.1 Identifiers 14.2 Primary expressions 14.3 Reserved namespace expressions 14.4 Parenthesized expressions 14.5 Function expression 14.6 Object initialiser 14.7 Array initialiser 14.8 XML initialisers 14.9 Super expression 14.10 Postfix Expressions 14.11 New expressions 14.12 Property accessors 14.13 Query operators 14.14 Call expressions 14.15 Unary expressions 14.16 Binary expressions 14.16.1 Multiplicative expressions 14.16.2 Additive expressions 14.16.3 Shift expressions 14.16.4 Relational expressions 14.16.5 Equality expressions 14.16.6 Bitwise expressions 14.16.7 Logical expressions 14.17 Conditional expressions 14.18 Non-assignment expressions 14.19 Assignment expressions 14.20 List expressions 14.21 Type expressions 15 Statements 15.1 Empty statement 15.2 Expression statement 15.3 Super statement 15.4 Block statement 15.5 Labeled statement 15.6 Conditional statements 15.6.1 If statement 15.6.2 Switch statement 15.7 Iteration statements 15.7.1 Do-while statement 15.17.2 While statement 15.7.3 For statements 15.8 Continue statement 15.9 Break statement 15.10 With statement 15.11 Return statement 15.12 Throw statement 15.13 Try statement 15.14 Default XML namespace statement 16 Directives 16.1 Attributes 16.2 Import directive 16.3 Include directive 16.4 Use directive 17 Definitions 17.1 Variable definition 17.2 Function definition 17.2.1 Function body 17.2.2 Function signature 17.2.3 Parameter list 17.2.4 Result type 17.3 Class definition 17.3.1 Class attributes 17.3.2 Class name 17.3.3 Class inheritance 17.3.4 Class block 17.4 Interface definition 17.4.1 Interface attributes 17.4.2 Interface name 17.4.3 Interface inheritance 17.4.4 Interface block 17.5 Package definition 17.5.1 Package name 17.6 Namespace definition 17.7 Program definition 18 Errors 18.1 Class errors 18.2 Interface errors 18.3 Package errors 18.4 Namespace errors 19 Native objects 19.1 Global object 19.2 Object objects 19.3 Function objects 19.4 Array objects 19.5 String objects 19.6 Boolean objects 19.7 Number objects 19.8 Math object 19.9 Date objects 19.10 Error objects 20 Compatibility with the static profile 21 Compatibility with ECMAScript edition 3 21.1 this inside of nested function 21.2 No boxing of primitives 21.3 Assignment to const is a runtime exception 21.4 Class names are const 21.5 Array arguments object 22 Compatibility with E4X