·您当前的位置:首页 > 技术教程 >

[AS3]as3数据类型检查写法(is/as/typeof/in/instanceof)用法介绍(2)

时间:2012-10-12 09:0251cto.com
(4) in运算符 用法expression1 in expression2计算属性是否为特定对象的一部分。若使用in运算符,要将属性名指定为第一个操作数,并将对象指定为第二个操作数。如果expression1是由expression2表示的对象的属性,则

(4) in运算符

用法expression1 in expression2计算属性是否为特定对象的一部分。若使用in运算符,要将属性名指定为第一个操作数,并将对象指定为第二个操作数。如果expression1是由expression2表示的对象的属性,则值为true,否则为false。

例如:

  1. trace("PI" in Math); // true   
  2. trace("myProperty" in Math); // false 

如果指定的对象是Array对象,则可以使用in运算符来检查特定的索引编号是否有效。如果向第一个操作数传递整数,那么,当索引位于有效的索引编号范围内时,结果为true,否则为false。

例如:

  1. var myArray:Array = ["a", "b", "c"];   
  2. trace(0 in myArray); // 0 是 myArray 对象中的有效索引编号,返回true   
  3. trace(1 in myArray); // 1 是 myArray 对象中的有效索引编号,返回true   
  4. trace(2 in myArray); // 2 是 myArray 对象中的有效索引编号,返回true   
  5. trace(3 in myArray); // 3 不是 myArray 对象中的有效索引编号,返回false  

(5) instanceof运算符

用法expression instanceof function计算表达式的原型链是否包括function的原型对象。如果expression 的原型链包括function的原型对象,则返回true,否则返回false。

例如:

  1. var mySprite:Sprite = new Sprite();   
  2. // 创建名为mySprite的Sprite类的一个实例   
  3. trace(mySprite instanceof Sprite);   
  4. // 因为Sprite和DisplayObject的原型对象位于mySprite的原型链上,所以返回true   
  5. trace(mySprite instanceof DisplayObject);   
  6. // 返回true  

ActionScript 3.0包括instanceof运算符,是为了与ECMAScript 3.0版保持向后兼容,它对于选择用带构造函数的基于原型的继承来代替类继承的高级程序员可能非常有用。ActionScript中的is 运算符与Java中的 instanceof运算符等效。

使用is运算符检查对象是否为特定数据类型的成员。当与类一起使用时,instanceof运算符类似于is运算符,因为类的原型链包括其所有超类。

但是,原型链上不包括接口,因此当与接口一起使用时,instanceof运算符的结果始终为false,而is运算符的结果为true(如果对象属于实现指定接口的类)。

例如:

  1. var mySprite:Sprite = new Sprite();   
  2. trace(mySprite instanceof IBitmapDrawable);   
  3. // 由于instanceof运算符不能与IBitmapDrawable接  
  4. 口一起使用,因此返回false   
  5. trace(mySprite is IBitmapDrawable);   
  6. // 由于DisplayObject是实现IBitmapDrawable接  
  7. 口的Sprite类的超类,因此返回true  

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器