Actionscript3でこのようなことをしたいです。
_if(variable is Object) ...;
else ...;
_
ここで、variable
はString()
、Number()
、Array()
、Object()
..
現在、上記のチェックはこれらすべてのタイプに対してtrueを返しますが、これは理にかなっています。ただし、new Object()
で作成されたオブジェクトに対してのみtrueを返すようにします。
どんな助けでも大歓迎です!
この関数(getQualifiedClassName
およびtypeof
)を使用してみてください。リストしたさまざまなデータ型での動作を示すコードを次に示します。特に、配列と数値の違いを確認してください。
コード:
var o = new Array();
trace ("var o = new Array()");
trace (getQualifiedClassName(o));
trace (typeof(o));
var o = new Object();
trace ("var o = new Object();");
trace (getQualifiedClassName(o));
trace (typeof(o));
var o = new String();
trace ("var o = new String()");
trace (getQualifiedClassName(o));
trace (typeof(o));
var o = new Number()
trace ("var o = new Number()");
trace (getQualifiedClassName(o));
trace (typeof(o));
var o = 3.14;
trace ("var o = 3.14");
trace (getQualifiedClassName(o));
trace (typeof(o));
結果:
var o = new Array()
Array
object
var o = new Object();
Object
object
var o = new String()
String
string
var o = new Number()
int
number
var o = 3.14
Number
number
GetQualifiedClassNameがあなたが探しているものであると思います。これはflashutilsパッケージに含まれています。
import flash.utils.getQualifiedClassName;
これらのいずれかに基づいて何かを試してください:
if (variable.constructor.toString().match(/object/i) == 'Object')
if (variable.constructor.toString().indexOf("Object") != -1)
オブジェクトがObject()の場合、コンストラクタ文字列は次のようになります。
function Object() { ... }
だからあなたはそれをチェックすることができます。
スーパークラスがないため、getQualifiedSuperclassName
タイプにnull
を返すObject
を使用することもできます。
public static function isObject( obj:* ):Boolean
{
if ( obj == null )
return false;
return ( getQualifiedSuperclassName( obj ) == null );
}