is は AS3 から新しく追加された演算子で、ある変数が特定の型に属しているか判定するときに使用します。is の左側の変数が右側の型のメンバーであれば式の値は true に、そうでなければ false になります。
var mySprite:Sprite = new Sprite(); trace (mySprite is Sprite); // true が出力される
AS2 では instanceof 演算子が同じ目的で使用されていましたが、AS3 ではサポートされていません。代わりに is を使用するようにしましょう。instanceof 演算子を使用すると正しく判定されないケースが出てきます。例えば、下の例では Sprite のインスタンスに対して、3種類の型に対して判定を行っています。
var mySprite:Sprite = new Sprite(); trace (mySprite is Sprite); // true が出力される trace (mySprite is DisplayObject); // true が出力される trace (mySprite is IEventDispatcher); // true が出力される
Sprite は DisplayObject のサブクラスで、かつ IEventDispatcher を継承した EventDispatcher クラスのサブクラスです。従って全てのケースで true になるはずです。ところが、 is の代わりに instanceof 演算子を使用すると、下の2つは false になってしまいます。
var mySprite:Sprite = new Sprite(); trace (mySprite instanceof Sprite); // true が出力される trace (mySprite instanceof DisplayObject); // false が出力される trace (mySprite instanceof IEventDispatcher); // false が出力され
基本データ型と is
数値型や文字列の値の型判定は、型情報がないので実際の値を評価する必要があります。データ型について詳しくはまだ取り上げていませんが、とりあえず、以下に代表的と思われる例に対する値を表にしましたので参考にしてください。
値 |
String |
Number |
int |
uint |
Boolean |
Object |
"foo" |
true |
false |
false |
false |
false |
true |
"1" |
true |
false |
false |
false |
false |
true |
null |
false |
false |
false |
false |
false |
false |
undefined |
false |
false |
false |
false |
false |
false |
true |
false |
false |
false |
false |
true |
true |
false |
false |
false |
false |
false |
true |
true |
0 |
false |
true |
true |
true |
false |
true |
1 |
false |
true |
true |
true |
false |
true |
-1 |
false |
true |
true |
false |
false |
true |
1.0 |
false |
true |
false |
false |
false |
true |
NaN |
false |
true |
false |
false |
false |
true |
コメントする