1. as 運算子
若要將 obj 轉換為數組,請使用 as 運算子,它將在 obj 為有效數組的情況下返回數組引用,否則返回 null:
var obj:Object = [ "a", "b", "c" ];
var newArray:Array = obj as Array;
trace(newArray == obj); // true
trace(newArray[0]); // a
trace(newArray[1]); // b
trace(newArray[2]); // c
2.實值型別與參考型別
實值型別:直接儲存值。每個變數的值不因其他變數的值的改變而改變。
Exp1.
var a :int = 3;
var b: int = a;
b = 9; //該變b 的值為9
trace(a); //輸出a 為3,a沒有因為b 的值的改變而變
trace(b); //輸出 b 為 9
參考型別:儲存引用,指向要操作的對象
Exp2.a1,b1同時指向了數組[1,2,3]
var a1:Array= new Array(1,2,3);
trace(a1); //輸出a1 為1, 2,3
var b1:Array = a1 ;
b1[0] = 5;
trace(a1); //輸出a1 為5,2,3,值已經被b1修改了
trace(b1); //輸出b1 為5,2,3
AS3中的基礎資料型別 (Elementary Data Type)是Boolean,int ,Number,String,uint,實值型別也是這麼幾種,除此都是參考型別。
java的的資料類型分有基本類型 和參考型別
基礎資料型別 (Elementary Data Type)有8大:byte,char ,short ,long, int, float ,double, boolean
參考型別有3大:類.介面.數組
AS實值型別也是引用存值。
Java基本類型是直接持有值。
3. 三元運算子
test ? expression1 : expression2
test
任何 Boolean 運算式。
test 為 true 時返回的運算式expression1 。可能是逗點運算式。
test 為 false 時返回的運算式expression2 。可能是逗點運算式。
Exp1
var a :int = 3;
var b: int = a;
b = 9; //改變b 的值為9
trace(a); //3
trace(b); //9
(a==5)?trace(a):trace(b) //9
4.typeof , is ,as
var my :String ="I LOVE YOU";
trace (typeof my); // string。typeof:返回資料類型
trace (my is String); // true。is:判斷資料類型
trace (my is Number); // false。不是Number資料類型
trace (my as String); //I LOVE YOU。as:判斷資料類型,並返回my值
trace (my as Number); //null。不是Number資料類型,並返回null
5.in
判斷一個對象是否作為另外一個對象的鍵(Key)或索引
var a:Array=[1,2,3,4,5];
trace(2 in a); // true
6.delete
刪除對象任意一個執行個體的屬性
Exp
var a:Array=[1,2,3,4,5];
trace(a); //1,2,3,4,5
delete a[2];
trace(a); //1,2,,4,5
7. AS3允許運算式的值不是Boolean值,會自動轉換成相應的Boolean值
8.for …in & for each …in 枚舉集合的元素
var books:Object = {
a:"《LOVE IS EVERYTHING》",
b:"《FUCK YOUR BABY》",
c:"《I HIT YOU》"
}
for (var k in books){
trace("key name: "+k+"\t value:"+books[k]);
}
/* \t在Regex中是匹配一個定位字元,通過索引值訪問
輸出:
key name: a value:《LOVE IS EVERYTHING》
key name: b value:《FUCK YOUR BABY》
key name: c value:《I HIT YOU》
*/
for each (var k in books){
race(k);
}
/* 直接存取成員
《LOVE IS EVERYTHING》
《FUCK YOUR BABY》
《I HIT YOU》
*/
8.arguments.callee
9. == 與===的區別
10.AS3不支援抽象類別(可用某些技巧實現抽象類別),也不能直接實現單例模式(可以用包外類)
11.AS3不支援方法的重載,可以用…rest實現