AS3:检查变量是不是属于 Object 类型

Posted

技术标签:

【中文标题】AS3:检查变量是不是属于 Object 类型【英文标题】:AS3: Checking if a variable is of the Object typeAS3:检查变量是否属于 Object 类型 【发布时间】:2010-12-25 12:05:39 【问题描述】:

我想在 Actionscript 3 中做这样的事情:

if(variable is Object) ...;
else ...;

variable 可以是 String()Number()Array()Object()...

目前,上述检查对所有这些类型都返回 true,这是有道理的。但是,我只希望它为使用 new Object() 制作的对象返回 true。

任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

尝试基于以下之一的方法:

if (variable.constructor.toString().match(/object/i) == 'Object')

if (variable.constructor.toString().indexOf("Object") != -1)

如果对象是 Object(),则构造函数字符串将类似于

function Object()  ... 

所以你可以检查一下。

【讨论】:

【参考方案2】:

您应该尝试使用此功能 - getQualifiedClassNametypeof。这是一个代码,显示了它们对于您列出的不同数据类型的行为方式,尤其是 Array 和 Numbers 的区别:

代码:

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 将是您正在寻找的,它位于 flash utils 包中:

import flash.utils.getQualifiedClassName;

【讨论】:

是的,实际上我很快就发现了 getQualifiedClassName,这确实是我想要的。感谢您的回复!【参考方案3】:

您也可以使用getQualifiedSuperclassName,它为Object 类型返回null,因为它没有超类:

public static function isObject( obj:* ):Boolean

    if ( obj == null )
        return false;
    return ( getQualifiedSuperclassName( obj ) == null );

【讨论】:

【参考方案4】:

给你,试试这个..

var ob:Object = new Object();

trace(ob); //[object Object]
trace(typeof(ob) == "object"); //true

if(typeof(ob) == "object")
    //true
else
    //false

【讨论】:

以上是关于AS3:检查变量是不是属于 Object 类型的主要内容,如果未能解决你的问题,请参考以下文章

as3 运算与检查String 是否能够正确转换成数 值

Dart语言关键词之dynamic

关于JavaScript的变量的数据类型的判断方法

AS3:如何从影片剪辑内部检查和重置主时间轴上的变量

动态、对象、变量

Java中怎样判断一个变量是不是属于哪种类型