网上有这么一篇文章,全文如下: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补充:

可见,对于不能转换成int的参数,parseInt返回NaN,int返回0
而parseInt每次都是尽量处理能转行的参数trace(parseInt("456b123"), "=456");

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的更多相关文章

  1. 仿网易邮箱5.0(四):信息提示插件(tips.js)

    信息提示插件,在平常的开发中也是经常乃至的一个插件,像是一些辅助信息的提示,如:加载成功.提交信息成功或失败等等.这个插件在163邮箱中用在切换标签时提示加载状态. 下面我们先来分析一下这个小插件需要 ...

  2. 使用spark与ElasticSearch交互

    使用 elasticsearch-hadoop 包,可在 github 中搜索到该项目 项目地址 example import org.elasticsearch.spark._ import org ...

  3. Vue.js 插件开发详解

    前言 随着 Vue.js 越来越火,Vue.js 的相关插件也在不断的被贡献出来,数不胜数.比如官方推荐的 vue-router.vuex 等,都是非常优秀的插件.但是我们更多的人还只停留在使用的阶段 ...

  4. C# 使用NPOI 导出Excel

    NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作 下面介绍下NPOI操作Excel的方法 首先我们需要下载NPOI的程序集 下载地址 http://npoi.codep ...

  5. Spring Boot with Spring-Data-JPA学习案例

    0x01 什么是Spring Boot? Spring Boot是用来简化Spring应用初始搭建以及开发过程的全新框架,被认为是Spring MVC的"接班人",和微服务紧密联系 ...

  6. Spring Boot 2.0 入门指南

    0x01 什么是Spring Boot? Spring Boot是用来简化Spring应用初始搭建以及开发过程的全新框架,被认为是Spring MVC的“接班人”,和微服务紧密联系在一起. 0x02 ...

  7. 自己动手写Vue插件Toast

    <style> .vue-toast { width: 100%; height: 100%; position: fixed; top: 0px; left: 0px; backgrou ...

  8. 个人待办事项工具的设计和搭建(IFE前端2015春季 任务3)

    这是我几个月之前的项目作品,花了相当的时间去完善.博客人气不高,但拿代码的人不少,所以一直处于保密状态.没有公开代码.但如果对你有帮助,并能提出指导意见的,我将十分感谢. IFE前端2015春季 任务 ...

  9. VUE中toast的使用与开发

    在这篇文章中介绍了toast是什么,这篇文章主要介绍toast的开发与使用. 开发 Vuejs很流行,并且官方也给出了路由插件vue-router.数据管理插件vuex,但是我们仅仅停留在了使用的阶段 ...

随机推荐

  1. Dice chrone execise

    def score(dices_input): count = {}.fromkeys(range(1, 7), 0) points = 0 for dice_side in dices_input: ...

  2. windows条件下,Ping加上时间戳,并保存到文件,适用于测试网络

    在c盘下面新建文件 ping.vbs 在 ping.vbs中输入代码如下: Dim args, flag, unsuccOut args="" otherout="&qu ...

  3. hive-学习笔记

    1.hive模糊搜索表  show tables like '*name*'; 2.查看表结构信息  desc formatted table_name;  desc table_name; 3.查看 ...

  4. iOS开发--动画篇之layout动画深入

    "不得不说,单单是文章的标题,可能不足以说明本文的内容.因此,在继续讲述约束动画之前,我先放上本文要实现的动画效果." 编辑:Bison投稿:Sindri的小巢 约束动画并不是非常 ...

  5. java开发--反射技术

    学习目标: 1.什么是反射:即反射的定义, 2.反射有什么作用,能解决什么问题, 3.反射的知识点是什么, 4.反射的利弊 5.反射的例子 1.什么是反射:反射的定义: a) 能够分析类能力的程序被称 ...

  6. Linux命令-cp

    cp命令用于复制文件到目录 参数 -r 递归持续复制(用于目录) 参数 -p 保留原始文件属性 参数 -d 若对象为链接文件,保留该链接文件的属性 参数 -a 相当于以上三者之和(-pdr) [roo ...

  7. scala函数式编程

    1.作为值的函数 在Scala中,函数和数字一样,可以在变量中存放函数.可以把函数赋值给一个变量,格式为:val foee=fun _(函数名+空格+_)形式 2.匿名函数 在scala中,不需要给每 ...

  8. 分析函数(Analytic Functions)

    在OLAP这类系统或者DW这类数据库中,作为某份报表的数据源,我们常常需要在某个存储过程中编写复杂的运算代码来汇总数据.分析函数便具备这样的能力,引用多行的数据值来进行多层面的聚合运算,在数据子集中进 ...

  9. ubuntu 默认 进入 命令行

    图形模式下,首先进入终端:1. 运行 sudo vi/etc/default/grub2. 找到 GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”3.改为 GRUB_ ...

  10. DOJO 八 event dojo/on

    官网教程:Events with Dojo在元素上绑定events,需要引用包dojo/on,通过on方法来实现. <button id="myButton">Clic ...