【问题标题】: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。

任何帮助将不胜感激!

【问题讨论】:

    标签: actionscript-3 actionscript


    【解决方案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
        }
        

        【讨论】:

          猜你喜欢
          • 2011-01-13
          • 2020-03-21
          • 2012-02-11
          • 1970-01-01
          • 2020-07-17
          • 2021-07-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多