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】:您应该尝试使用此功能 - getQualifiedClassName
和 typeof
。这是一个代码,显示了它们对于您列出的不同数据类型的行为方式,尤其是 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 类型的主要内容,如果未能解决你的问题,请参考以下文章