[AS3]as3数据类型检查写法(is/as/typeof/in/instanceof)用法介绍(2)
(4) in运算符
用法expression1 in expression2计算属性是否为特定对象的一部分。若使用in运算符,要将属性名指定为第一个操作数,并将对象指定为第二个操作数。如果expression1是由expression2表示的对象的属性,则值为true,否则为false。
例如:
- trace("PI" in Math); // true
- trace("myProperty" in Math); // false
如果指定的对象是Array对象,则可以使用in运算符来检查特定的索引编号是否有效。如果向第一个操作数传递整数,那么,当索引位于有效的索引编号范围内时,结果为true,否则为false。
例如:
- var myArray:Array = ["a", "b", "c"];
- trace(0 in myArray); // 0 是 myArray 对象中的有效索引编号,返回true
- trace(1 in myArray); // 1 是 myArray 对象中的有效索引编号,返回true
- trace(2 in myArray); // 2 是 myArray 对象中的有效索引编号,返回true
- trace(3 in myArray); // 3 不是 myArray 对象中的有效索引编号,返回false
(5) instanceof运算符
用法expression instanceof function计算表达式的原型链是否包括function的原型对象。如果expression 的原型链包括function的原型对象,则返回true,否则返回false。
例如:
- var mySprite:Sprite = new Sprite();
- // 创建名为mySprite的Sprite类的一个实例
- trace(mySprite instanceof Sprite);
- // 因为Sprite和DisplayObject的原型对象位于mySprite的原型链上,所以返回true
- trace(mySprite instanceof DisplayObject);
- // 返回true
ActionScript 3.0包括instanceof运算符,是为了与ECMAScript 3.0版保持向后兼容,它对于选择用带构造函数的基于原型的继承来代替类继承的高级程序员可能非常有用。ActionScript中的is 运算符与Java中的 instanceof运算符等效。
使用is运算符检查对象是否为特定数据类型的成员。当与类一起使用时,instanceof运算符类似于is运算符,因为类的原型链包括其所有超类。
但是,原型链上不包括接口,因此当与接口一起使用时,instanceof运算符的结果始终为false,而is运算符的结果为true(如果对象属于实现指定接口的类)。
例如:
- var mySprite:Sprite = new Sprite();
- trace(mySprite instanceof IBitmapDrawable);
- // 由于instanceof运算符不能与IBitmapDrawable接
- 口一起使用,因此返回false
- trace(mySprite is IBitmapDrawable);
- // 由于DisplayObject是实现IBitmapDrawable接
- 口的Sprite类的超类,因此返回true
热门文章推荐
- [Red5]Red5之Flash流媒体服务器的安装与使用教程完整版(组图)
- [rtsp]设置海康配置DDNS远程访问的用户手册(组图说明)
- [live555]live555直播rtsp流
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [FFmpeg]FFmpeg实现监控摄像头的RTSP协议转RTMP协议直播
- [海康]海康网络摄像机激活功能图文教程
- [RED5]搭建RED5直播用流媒体服务(搭直播环境)