AS3数据类型

基础很重要,以下内容都是参照prog_actionscript30.pdf,但不算翻译,adobe labs上有。

type checking
as3里有两种类型检测:编译时和运行时。as3是一种动态定义类型语言(Dynamically typed language),一般来说应该是运行时才会去检测类型正确性,但是在实际开发中,这种检测有时会降低开发效率,所以flash9提供了编译时检测的方式,在发布时选择strict mode

is 操作符
is是用来代替instanceof的,检测变量是否是某个类型,比如
var mySprite:Sprite = new Sprite();
trace(mySprite is Sprite)     // true
trace(mySprite is IEventDispatcher)    // true
is 可以检测到接口,而instanceof 不行,看来is更能体现继承结构
trace(mySprite instanceof IEventDispatcher)   // false

as 操作符
as跟is的作用是一样的,区别是返回值不同,如果是true就返回类型值,false就返回null,比如:
trace(mySprite as DisplayObject)   // [object sprite]
trace(mySprite as Number)     // null

dynamic class
这真是一个很大的进步,除非使用dynamic关键字,as3的类都是静态的(sealed class),不能在类外动态定义变量方法,as2确能很自由。这样在运行时提高了很多效率

基本数据类型
这里有一点很重要,as3里基本类型也是对象(这跟java,C++不同,as3好像真的是完全的面向对象)。这样的写法是相同的:
var i:int = 3;
var i:int = new int(3);
这里值得注意一个技术细节,as3的基本类型是作为不变对象存在的(immutable object),如果你学过java,应该知道String就是这样一个特殊的对象。在内存中有这么一些区域来存放immutable object,他们是不可修改的(但是可以被垃圾回收),如果有两个引用是同一个值,比如var a:int = 3,var b:int = 3,他们实际上引用了同一个对象。但是如果修改它,比如a++,原来的3数值对象不会被修改(immutable的),但是会产生一个新对象4,被a引用,而3还是被b引用。这样,基本类型比复杂对象更能节省内存和提高效率。

  • Boolean  默认值false
  • int  默认值0,32位整数
  • Number  默认值NaN,64位浮点数
  • String  默认值null(字符串也算?)
  • uint  默认值0,一般用在颜色值上
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值