1、as3会进行类型检查,看数据类型是否匹配。
2、数据类型不匹配的几种情况
3、何时检查?
可以在编译时检查,也可以在运行时检查。编译分为两种模式,严格模式和标准模式。严格模式会在编译时执行类型检查,标准模式则不会;但两种模式都会在运行时检查。
4、严格模式下退出类型检查。
在严格模式下也可以避免进行类型检查,通过使用无类型变量。
例一:
function test1(p):void{
trace(p);
}
var a:Number = 10;
var b:String = "Hello";
test1(a);
test1(b);
例二:
function test2(p:String):void{
trace(p);
}
var a:* = 10
test2(a);
在例一和例二中,编译时都不会报错。因为,例一中,函数test1的参数声明为无类型的,它就可以接收任何类型的参数;例二中,虽然函数test2的参数类型为字符串,但我们传进去的参数为无类型的。
但是例二中会产生运行时错误,因为到运行时就会发现传进的参数是数字型的,和声明的参数类型不匹配。
5、
使用标准模式编译,实际上是把类型检查推迟到运行时进行,这样可以实现类的“上传”功能。
//定义
class ClassA extends ClassB{
var name:String;
}
//调用
var some:ClassB = new ClassA();
some.name="some";
如上,我们定义了ClassA,它继承自ClassB。ClassA定义了自己的一个属性name。在接下来的调用中,我们声明了一个ClassB类型的变量some,但我们赋给它了一个ClassA的实例,这是合法的,这就叫做“上传”。但接下来,我们给some的属性name赋值,但属性name并不属于ClassB,如果在严格模式下就会产生编译错误,但不会产生运行时错误。
6、is运算符。
用于测试变量或表达式是否为给定数据类型的成员,返回true或false。
假设:
- 存在类A
- 类A继承类B
- 类A实现接口IM
- 类B继承类C
- 类C实现接口IN
有:
var a:A=new A();
a is A; //true
a is B; //true
a is C; //true
a is IM; //true
a is IN; //true
//B、C为A的父类,IM、IN为A实现的接口
上面的每个表达式都为true;
和instanceof的不同,将is换成instance:
var a:A=new A();
a instanceof A; //true
a instanceof B; //true
a instanceof C; //true
a instanceof IM; //false
a instanceof IN; //false
//B、C为A的父类,IM、IN为A实现的接口
可以看到后两项为false,可以看出两者的不同:is可以检查接口,instance不能,所以我们应该用is
7、as运算符。功能和is一样,唯一的区别就是返回值,is返回true时,as返回测试的对象或表达式,is返回false,as返回null.
var a:A=new A();
a as A; //返回对象a
a as B; //返回对象a
a as C; //返回对象a
a as IM; //返回对象a
a as IN; //返回对象a
a as XX; //返回null
//B、C为A的父类,IM、IN为A实现的接口
本文地址:http://kino.iteye.com/blog/236381
,转载请注明,谢谢。
分享到:
相关推荐
web个人日历备忘系统-c#-sql,包括登录,注册,添加和删除编辑备忘。
javaMD5加密及登录验证(备忘) - Hibernate - Java - ITeye论坛.mhtjavaMD5加密及登录验证(备忘) - Hibernate - Java - ITeye论坛.mhtjavaMD5加密及登录验证(备忘
美国交通设施的六大主要经济事实-汉密尔顿工程 -政策备忘录-2015.5-外文-报告资料.pdf
控制台的程序,有可以查看、添加、修改、删除备忘。每次登陆后显示备忘提醒
电脑中的必备品,如有兴趣的可以私下交流,备忘相关事宜。
-我的Linux速查备忘手册-速查
德国工程师的CANopen备忘录-有书签
NULL 博文链接:https://ibmtech.iteye.com/blog/722412
网站合作备忘录-知识杂货店.xls
微信小程序实现的简易备忘录,可以记录代办事项,可以标记事项是否完成 微信小程序实现的简易备忘录,可以记录代办事项,可以标记事项是否完成 微信小程序实现的简易备忘录,可以记录代办事项,可以标记事项是否完成...
第09篇:跨站脚本(XSS)备忘单-2019版1
NULL 博文链接:https://ibmtech.iteye.com/blog/722412
NULL 博文链接:https://ibmtech.iteye.com/blog/722412
这是我刚学android时自己写的一个例子,主要用到了Activity,ContentProvider, BroadcastReceiver三大组件,还有涉及其他知识,我认为刚学android的话挺不错的例子
工作过程中,我们有很多常用的密码、链接等等直接写到.txt备忘录中,便于工作中复制使用,但是缺乏安全性。 在网上下载了几个加密文件,但是都达不到个人的方便为主的需求,所以开发了此应用。 功能介绍: 设置总...
新三板关于员工股权激励计划的备忘录-精品模板文案.docx
我使用的开发板是友坚恒天的UTV210CV03,基本配置如下,开发板提供的资料很少,我找了下连uboot 源码都没给,核心板原理图也没给,我也就忍了。网上也说TI 的AM335资料相对较多。可能如果给我一次重新选择的机会的话...
一个ASP环境的日历应用程序,一个备忘录类型的asp源码,由天天ASP家园用ASP开发,可记录某一天需要做的事情,可简单编辑、删除、修改所做的备忘记录。使用中有任何问题可以到以下地址给我们留言,我们会在两小时内...
c 提供基本语法和方法的 C++ 快速参考备忘单
该备忘录实现,登录,数据库连接,添加,删除,增加,更新,可与手机安装使用,基本里面所有关键点都有着注释,是按照学生的角度来编写的,注释详细,有文档,做出来很久了,但是之前都是在我主页博客没有进行收费,...