type tips
网上有这么一篇文章,全文如下:http://bbs.9ria.com/blog-220191-18429.html
AS3中一共有以下六种获取变量类型的方法:
- typeof
- instanceof
- getQualifiedClassName
- getQualifiedSuperclassName
- is
- as
typeof运算符用来返回基元数据的类型(所谓基元数据类型是指:int,uint,Boolean,Number,String 除此以外全部都是复杂数据类型)。注意,使用typeof返回复杂数据类型时将始终得到“Object”。
typeof的使用方法如下例所示:
var size:int=10;
var color:uint=0x990000;
var flag:Boolean=false;
var num:Number=.5;
var name:String=”My Name is HuLin”;
var arr:Array=[1,2,3];
var obj:Object=new Object();
var mc:MovieClip=new MovieClip();
var shape:Shape=new Shape();
trace(typeof(size)); //int
trace(typeof(color)); //uint
trace(typeof(flag)); //Boolean
trace(typeof(num)); //Number
trace(typeof(name)); //String
trace(typeof(arr)); //Object
trace(typeof(obj)); //Object
trace(typeof(mc)); //Object
trace(typeof(shape)); //Object
instanceof是AS3以前的ActionScript版本(AS2或AS1)中用来判断变量类型的运算符。在AS3中依然可以使用,但是建议不要再用,因为在它可能无法正确判断AS3中新增的数据类型。例如,有如下语句:
var num:int=5;
trace(num instanceof int); //false
显然,这是错误的。在AS3中应当使用is来代替它。
getQualifiedClassName运算符用来返回变量所属的类的类名,用法如下:
var shap:Shape=new Shape();
trace(getQualifiedClassName(shap)); //flash.display::Shape
注意,使用getQualifiedClassName只能返对象的直接归属类的类名,而不能获取整条继承链。
getQualifiedSuperclassName运算符用来返回对象所属类的父类的名称,用法如下:
var shap:Shape=new Shape();
trace(getQualifiedSuperclassName(shap));// flash.display::DisplayObject
is运算符,AS强力推荐之法宝。它用来验证指定变量是否属于指定类型,是则返回true,否则返回false。用法如下:
var shap:Shape=new Shape();
trace(shap is Shape); //true
var num:int=5;
trace(num is Array); //false
as运算符也是AS3中新增的内容。它跟is运算符的用法类似,但是它不像is一样返回true或flash,而是返回对象本身(类型匹配时会将对象转换为匹配类型)或null(类型不匹配时)。用法如下:
var shap:Shape=new Shape();
trace(shap as Shape); //[object Shape]
trace(shap as MovieClip);// null
但是经过我的测试,关于typeof的描述是不对的,(ide是fb4.6,sdk也是4.6版的)。
var size:int = 10;
var color:uint = 0x990000;
var flag:Boolean = false;
var num:Number = .5;
var name:String = "My Name is HuLin";
var arr:Array = [ 1, 2, 3 ];
var obj:Object = new Object();
var mc:MovieClip = new MovieClip();
var shape:Shape = new Shape();
trace(typeof(size));
trace(typeof(color));
trace(typeof(flag));
trace(typeof(num));
trace(typeof(name));
trace(typeof(arr));
trace(typeof(obj));
trace(typeof(mc));
trace(typeof(shape));
trace(size instanceof int);
trace(color instanceof int);
这段代码在我的电脑上输出如下:
number
number
boolean
number
string
object
object
object
object
false
false
也就是说,typeof和instanceof是一样的,一样识别不出as3种的新类型,在ide中,使用instanceof会提示是deprecated,但typeof却不会有提示。
但在在开发中也尽量少用typeof。
而对于getQualifiedClassName需要注意的是,对于uint和int类型的变量,getQualifiedClassName返回的都是int
这个就不知道uint和int在底层到底是怎么处理的~
但对于uint类型的变量a, trace(a is uint)返回的又是true!
而对于vectior类型的变量v, trace(v is Vector)返回的是flase!
补充一个,getDefinitionByName通过name获取Class对象。flash.display.Shape 和 flash.display::Shape 这两个都有效!
2014.03.20补充:
trace(typeof(null));
trace(getQualifiedClassName(null));
输出:
object
null
2014.03.21补充:
trace(1 as Number); //int,uint,同,
输出null
即是:可以看出,Number,int,uint如果用as来转换,会返回null。
对比
obj as aClass
aClass(obj)
如果类型不匹配的情况下,第一种写法返回null,第二种写法报错,
类型匹配的情况下,第一种写法的效率要高于第二种!
所以,尽可能的多用as来转换。
2014.04.10补充:
var v:Vector.<int> = new Vector.<int>();
trace(v is Vector);
trace(v);
trace(getQualifiedClassName(v));
trace(typeof(v));
上面代码输出:
false
__AS3__.vec::Vector.<int>
object
type tips的更多相关文章
- 仿网易邮箱5.0(四):信息提示插件(tips.js)
信息提示插件,在平常的开发中也是经常乃至的一个插件,像是一些辅助信息的提示,如:加载成功.提交信息成功或失败等等.这个插件在163邮箱中用在切换标签时提示加载状态. 下面我们先来分析一下这个小插件需要 ...
- 使用spark与ElasticSearch交互
使用 elasticsearch-hadoop 包,可在 github 中搜索到该项目 项目地址 example import org.elasticsearch.spark._ import org ...
- Vue.js 插件开发详解
前言 随着 Vue.js 越来越火,Vue.js 的相关插件也在不断的被贡献出来,数不胜数.比如官方推荐的 vue-router.vuex 等,都是非常优秀的插件.但是我们更多的人还只停留在使用的阶段 ...
- C# 使用NPOI 导出Excel
NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作 下面介绍下NPOI操作Excel的方法 首先我们需要下载NPOI的程序集 下载地址 http://npoi.codep ...
- Spring Boot with Spring-Data-JPA学习案例
0x01 什么是Spring Boot? Spring Boot是用来简化Spring应用初始搭建以及开发过程的全新框架,被认为是Spring MVC的"接班人",和微服务紧密联系 ...
- Spring Boot 2.0 入门指南
0x01 什么是Spring Boot? Spring Boot是用来简化Spring应用初始搭建以及开发过程的全新框架,被认为是Spring MVC的“接班人”,和微服务紧密联系在一起. 0x02 ...
- 自己动手写Vue插件Toast
<style> .vue-toast { width: 100%; height: 100%; position: fixed; top: 0px; left: 0px; backgrou ...
- 个人待办事项工具的设计和搭建(IFE前端2015春季 任务3)
这是我几个月之前的项目作品,花了相当的时间去完善.博客人气不高,但拿代码的人不少,所以一直处于保密状态.没有公开代码.但如果对你有帮助,并能提出指导意见的,我将十分感谢. IFE前端2015春季 任务 ...
- VUE中toast的使用与开发
在这篇文章中介绍了toast是什么,这篇文章主要介绍toast的开发与使用. 开发 Vuejs很流行,并且官方也给出了路由插件vue-router.数据管理插件vuex,但是我们仅仅停留在了使用的阶段 ...
随机推荐
- ARM 汇编指令
ARM汇编程序特点: l 所有运算处理都是发生通用寄存器(一般是R0~R14)的之中.所有存储器空间(如C语言变量的本质就是一个存储器空间上的几个BYTE).的值的处理,都是要传送到通 ...
- mysql 连接数的最大数
mysql默认最大连接数是100,增加加默认MYSQL连接数的方法有两个 方法一:进入MYSQL安装目录 打开MYSQL配置文件 my.ini(windows) 或 my.cnf(linux环境)查找 ...
- http://blog.sina.com.cn/s/blog_5b9b4abe01017638.html
http://blog.sina.com.cn/s/blog_5b9b4abe01017638.html
- Textures
LPDIRECT3DVERTEXBUFFER9 g_VertexBuffer=NULL; //顶点缓存 LPDIRECT3DTEXTURE9 g_Texture=NULL;//纹理对象 bool In ...
- jquery plug-in DataTable API中文文档参考
前言:最近在做一个WEB后台,无意中发现这个插件,试用了一下觉得不错,但网上关于它的资料大多不全,所以利用一些时间将其API文档翻了一下,发在园子里供大家参考.(p.s:个人E文水平很差,对着灵格斯翻 ...
- 对话框上右下角显示resize icon(可以拖动改变对话框的大小)(在WM_CREATE的时候,增加WS_THICKFRAME风格)
CStatusBar m_StatusBar; // 成员变量 // 全局变量 static UINT auIDStatusBar[] = { ID_SEPARATOR }; //在对话框类的WM_ ...
- 返回Json数据浏览器带上<pre></pre>标签解决方法
问题: 当后台获取到前台传来的文件时(例如上传功能, 导入功能), 返回类型为application/json, 这个时候响应到前端的JSON格式的数据格式可能是: <pre style=&q ...
- IDEA中利用JUnit进行单元测试
打开IntelliJ IDEA工具,Alt+Ctrl+S,打开设置窗口,点击进入Plugins. 从插件资源库中搜索JunitGenerator V2.0版本
- oracle服务、客户端 plsql配置
1.oracle服务端安装 Oracle 9i 的安装(图解) 2.oracle客户端安装 http://wenku.baidu.com/view/8be28581f524ccbff0218427.h ...
- 基于web工作流开发
目前在研发基于web工作流的开发 什么是工作流? 工作流简言之就是: 1.反应业务流程的计算机化的模型. 2.一类能够完全或者部分自动执行的经营过程:(为了提高效率,实现自动化). 3.任务.活动及活 ...