3.2.2 复合数据类型
ActionScript核心类还定义下列复合数据类型:Object、Array、Date、Error、Function、RegExp、XML和XMLList。这些数据类型定义的值,有一个可变的值,包含了对元素实际值的引用。也就是该值所对应的内存地址,储存的不是该值本身,而是该值的引用地址。
1.Object
Object数据类型是由Object类定义的。Object类用作ActionScript中的所有类定义的基类。Object数据类型的定义语法如下所示:
var myobject:Object=new Object();
ActionScript. 3.0中的Object数据类型,与早期版本中的Object数据类型存在以下三方面的区别:
l Object数据类型,不再是指定给没有类型注释的变量的默认数据类型。
l Object数据类型不再包括undefined这一值,该值之前是Object实例的默认值。
l 在ActionScript. 3.0中,Object类实例的默认值是null。
在早期的ActionScript.版本中,会自动为没有类型注释的变量赋予Object数据类型。ActionScript. 3.0现在包括真正无类型变量这一概念,因此不再为没有类型注释的变量赋予Object数据类型。没有类型注释的变量现在被视为无类型变量。如果希望在代码中表明是故意将变量保留为无类型,可以使用新的星号(*)表示类型注释,这与省略类型注释等效。下面的代码显示两条等效的语句,两者都声明一个无类型变量x:
var x
var x:*
只有无类型变量才能保存值undefined。如果尝试将值undefined赋给具有数据类型的变量,Flash Player会将该值undefined转换为该数据类型的默认值。对于Object数据类型的实例,默认值是null,这意味着,如果尝试将undefined赋给Object实例,Flash Player会将值undefined转换为null。
2.Array
Array数据类型是由Array类定义的,Array类可以访问和操作数组。Array索引从零开始,这意味着数组中的第一个元素为[0],第二个元素为[1],依此类推。要创建Array对象,可以使用new Array()构造函数。Array()还可以作为函数调用。此外,还可以使用数组访问([])运算符初始化数组或访问数组元素。
可以在数组元素中存储各种各样的数据类型,包括数字、字符串、对象,甚至是其他数组。可以创建一个多维数组,方法是创建一个索引数组,然后给他的每个元素分配不同的索引数组。
数组是稀疏数组,这意味着可能存在这样的情况:在索引0处有一个元素,在索引5处有另一个元素,而这两个元素之间的索引位置却是空的。在这种情况下,位置1至位置4的元素是未定义的,表示这些位置不存在元素,但不一定存在值为undefined的元素。
数组赋值是通过引用而不是通过值进行的。如果将一个数组变量赋值给另一个数组变量,则这两个变量引用同一个数组,
如下所示代码演示了该效果:
var oneArray:Array = new Array("a", "b", "c");
var twoArray:Array = oneArray;
twoArray[0] = "z";
trace(oneArray); //输出结果为:z,b,c
不要使用Array类创建关联数组(也称为哈希),关联数组是包含命名元素而不包含编号元素的数据结构。要创建关联数组,使用Object类。虽然ActionScript允许使用Array类创建关联数组,但不能对关联数组使用Array类的任何方法或属性。
3.Date
Date数据类型由Date类定义,该类表示日期和时间信息。若要使用Date类,需使用new运算符构造一个Date实例。Date数据类型的定义语法如下所示:
var myDate1:Date = new Date();
Date类的实例表示一个特定时间点,可以查询或修改该时间点的属性(如月、日、小时和秒)。Date类用于检索相对于通用时间(格林尼治平均时,现称为通用时间或UTC)或相对于本地时间(由运行Flash Player的操作系统上的本地时区设置决定)的日期和时间值。
4.Error
Error数据类型是由Error类定义的,该类包含有关脚本中出现的错误的信息。开发ActionScript. 3.0应用程序过程中,如果在Flash Player的调试版中运行已编译的代码,将弹出对话框显示Error类型的异常或子类异常,以帮助开发者排除代码中的故障。可以使用Error构造函数来创建Error对象。通常,将新的Er
ror对象从try代码块中引发,然后由catch或finally代码块捕获。
try
{
//可能会引发错误的一些代码
}
catch (err:Error)
{
//用于响应错误的代码
}
finally
{
/
/无论是否引发错误都会运行的代码。此代码可在发生错误之后清除错误,或者采取措施使应用程序继续运行。
}
5.Function
函数是可在ActionScript中调用的基本代码单位。ActionScript中用户定义的函数和内置函数都由Function对象来表示,该对象是Function类的实例。
类的方法与Function对象略有不同。与普通函数对象不同,方法和与其关联的类对象紧密联系。因此,方法或属性具有在同一类的所有实例中共同的定义。可以从实例中提取方法并将其处理为“绑定”方法(保留与原始实例的链接)。对于绑定方法,this关键字指向实现该方法的原始对象。对于函数,this在调用函数时指向关联对象。
6.RegExp
RegExp数据类型是由RegExp类定义的,该类允许使用正则表达式(即可用于在字符串中执行搜索和替换文本的模式)。
可以使用new RegExp()构造函数或将RegExp文本分配给一个变量,从而创建新的RegExp对象,如下所示:
var pattern1:RegExp = new RegExp("test-\\d", "i");
var pattern2:RegExp = /test-\d/i;
7.XML
XML数据类型是由XML类定义的,该类包含用于处理XML对象的方法和属性。XML类
(以及XMLList、Namespace和QName类)可实现ECMAScript. for XML(E4X)规范(ECMA-357第2版)中定义的强大的XML处理标准。
使用toXMLString()方法可返回XML对象的字符串表示形式,不管该XML对象具有简单内容还是复杂内容。
ActionScript. 2.0中的XML类(以及相关类)已重命名为XMLDocument并移到l包中,包含在ActionScript. 3.0中,以实现向后兼容。
8.XMLList
XMLList数据类型是由XMLList类定义的,该类中包含用于处理一个或多个XML元素的方法。XMLList对象可以表示一个或多个XML对象或元素(包括多个节点或属性),因此,可以对作为一个组的多个元素调用方法,也可以对集合中的各个元素分别调用方法。
如果XMLList对象只包含一个XML元素,那么可以直接对XMLList对象使用XML类方法。在下面的示例中,example为长度1的XMLList对象,因此可以对他调用任意XML方法。
var example=<example><two>2</two></example>;
如果试图对包含多个XML元素的XMLList对象使用XML类方法,则会引发异常。此时,应遍历XMLList集合(例如,使用in语句),并对集合中的每个XML对象应用方法。数组类型字符串转数组
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论