代码之家  ›  专栏  ›  技术社区  ›  Ashine

检查对象是否为空

  •  6
  • Ashine  · 技术社区  · 16 年前

    请帮忙。 提前感谢。

    8 回复  |  直到 16 年前
        1
  •  15
  •   Simon Buchan    16 年前

    如果你的意思是,如果一个对象没有属性:

    var isEmpty:Boolean = true;
    for (var n in obj) { isEmpty = false; break; }
    
        2
  •  6
  •   sharvey    16 年前

    Object.prototype.isEmpty = function():Boolean {
        for(var i in this)
            if(i != "isEmpty")
                return false
        return true
    }
    
    var p = {};
    trace(p.isEmpty()); // true
    var p2 = {a:1}
    trace(p2.isEmpty()); // false
    
        3
  •  5
  •   Robert Bak    16 年前

    ObjectUtil.getClassInfo(obj).properties.length > 0
    

        4
  •  2
  •   Taro    15 年前

    若对象包含一些“文本”,但as3无法将其识别为String,请将其转换为String并检查它是否为空。

    var checkObject:String = myObject;
    
    if(checkObject == '')
    {
      trace('object is empty');
    }
    
        5
  •  0
  •   JTtheGeek    16 年前

    这取决于你的对象是什么,或者更确切地说,取决于你对它的期望。例如,如果你的对象应该包含你正在寻找的名为name的属性,你可以这样做

    if(objSomeItem == null || objSomeItem.name == null || objSomeItem.name.length == 0)
    {
     trace("object is empty");
    }
    

    var arySomeItems = objSomeItem as Array;
    if(objSomeItem == null || arySomeItems == null || arySomeItems.length == 0)
    {
      trace("object is empty");
    }
    

    您还可以通过反射使用其他方式,例如ObjectUtil.getClassInfo,然后枚举属性以检查设置值。…本课程帮助:

    import flash.utils.describeType;
    import flash.utils.getDefinitionByName;
    
    public class ReflectionUtils 
    {
        /** Returns an Array of All Properties of the supplied object */
        public static function GetVariableNames(objItem:Object):Array
        {
            var xmlPropsList:XMLList = describeType(objItem)..variable;
            var aryVariables:Array = new Array();
            if (xmlPropsList != null)
            {
                for (var i:int; i < xmlPropsList.length(); i++)
                {
                    aryVariables.push(xmlPropsList[i].@name);
                }
            }
    
            return aryVariables;
        }
    
        /** Returns the Strongly Typed class of the specified library item */
        public static function GetClassByName($sLinkageName:String):Class
        {
            var tObject:Class = getDefinitionByName($sLinkageName) as Class;
            return tObject;
        }
    
        /** Constructs an instance of the speicified library item */
        public static function ConstructClassByName($sLinkageName:String):Object
        {
            var tObject:Class = GetClassByName($sLinkageName);
            //trace("Found Class: " + tMCDefinition);
            var objItem:* = new tObject();
            return objItem;
        }
    
        public static function DumpObject(sItemName:String, objItem:Object):void
        {
            trace("*********** Object Dump: " + sItemName + " ***************");
            for (var sKey:String in objItem)
            {
                trace("    " + sKey +": " + objItem[sKey]);
            }
        }
        //}
    }
    

    另一件需要注意的事情是,您可以使用一个简单的for循环来检查对象的属性,这就是这个dumppobject函数的作用。

        6
  •  0
  •   Kans    10 年前

    您可以直接按如下方式进行检查,

    var obj:Object = new Object();
    if(obj == null)
    {
    //Do something
    }
    
        7
  •  0
  •   Eddie    10 年前

    function isEmptyObject(obj){
        return JSON.stringify(obj) === '{}';
    }
    
        8
  •  -1
  •   AndrewB    16 年前

    var i:int = myObject.hasProperty("length") ? myObject.length: 0;
    
    推荐文章