09.10.21
字符串:String
这里的字符指的是Unicode字符,比如,每个汉字就是一个Unicode字符。
/n 换行符
/r 回车
/t 指标
/ 转义符
数组:Array(一种数据集合)
每个数组中装的都不是数据对象本身,而是指向数据对象的引用。
把Object作为数据集合,通过字符串来访问成员。
Obj的成员有2种:①属性,用于存放各种数据
②方法,存放函数对象
成员的名字->键
成员被称为与这个键对应的值
var foo:Object=new Object();
var bar:Object={}; //效果一样
//写入多个属性,属性名和属性值以“:”号隔开,属性之间以“,”号隔开。
var foo:Obejct={name: "Anson",web: "www.baidu.com"};
trace(foo.name);
//输出:Anson
//写入方法
var bar:Object={
hello:function(){
trace(“Hello,guys!”);
},
ok:function():String{
return “that’s ok”;
}
};
bar.hello();//输出:Hello,guys!
trace(bar.ok());//输出:that’s ok
由于上面的例子中,我们确切知道成员的名字,可以直接用点号运算符(.)来添加或访问他们。要动态添加或者访问其中数据,要用到数组运算符([]).
var obj:Object={name:”Anson”,number:”08”};
trace(obj.name);//输出Anson
obj[“job”]=”student”;
trace(obj.job);//输出:student
可以看出有2种方法添加和访问Object类对象中的数据
不同类型变量的默认值
int 0
uint 0
Number NaN
String null
Boolean false
Array null
Object null
未声明类型 undefined
当String类型转换成数值类型时,判断String是否能正确转换成数值,不要用
Number(“string”)==NaN
这样永远返回false,应当使用:
!(Number(“string”))
例: trace(!Number("1"));
//输出false,即Number(“1”)成功将”1”转换成1
trace(!Number("1a"));
//输出true
运算符都必须有运算对象才可以进行运算,运算符合运算对象的组合,成为表达式。每个
表达式都产生一个值,就是表达式的值。例:4+3就是一个表达式,值为7.
运算符本身是一种特殊的函数,运算对象就是它的参数,运算结果值是它的返回值。
相等的概念,我们非常熟悉,一般指两个对象完全一样,我们就说两个对象相等。在AS3中,对于基础数据类型和复杂数据类型,其相等的意思不同。对于基础数据类型,判断值;对于复杂数据类型,判断引用。
在AS2中:
① var a=new Number(5);
② var b=new Number(5);
③ trace(a==b);//输出false;
因为AS2中是按引用来判断对象是否相等。
若把②换做:var b=5;或者var b=a;
则会发现输出true,因为它们引用指向同一对象。
全等运算符(===)和等于运算符(==)
全等运算符不执行类型转换,所以不同类型变量之间比较一定返回false,唯一例外,对于数值类型一视同仁,即只要值一样就返回true(对int,uint,Number)
关系运算符(>=,<=,>,<)
非数值的运算对象会尽量转换成数值,如果非数值的运算对象无法换成数值,那么这个表达式的值始终为false。
逻辑运算符(&&,||,!)
使用”&&”时,如果第一个表达式返回false,不会执行第二个表达式。
使用”||”时,如果第一个表达式返回true,不会执行第二个表达式。
三元if-else运算符(?:)
(条件表达式)?(表达式2):(表达式3)
typeof
用字符串形式返回对象类型
trace(typeof 10);//输出:number
对象类型 返回结果
Array object
Boolean boolean
Function function
int number
uint number
Number number
Object object
String string
XML xml
XMLList xml
is判断一个对象是否属于一种类型,返回布尔值
trace(9 is Number);//输出:true
as与is格式一致,内容不同:如果一个对象属于一种类型,那么as返回这个对象,否则返回null.
trace(9 as Number);//输出:9
trace(9 as Array);//输出:null
delete:
作用大大减少,只可以删除对象的动态实例属性,非动态属性不能删除
若要将一个属性所持有的引用删除,将null赋值给该属性即可。
var b:Object={ary:”one”,name:”ok”};
//delete b;报错无法删除固定属性b,只能删除动态定义的属性。要释放相关内存,将其设为
//null
delete b.ary;//成功
trace(b.ary);//输出:undefined
b=null;
trace(b);//输出null,那么b变量持有原有对象的引用就删除了