由于kajyr说,如果它是一个级DisplayObjectContainer你可以检查numChildren。
如果您想检查泛型对象是否包含您可能认为是该泛型对象的子对象的简单属性(如Number,int,uint,String,Boolean等原语)或复杂属性(子对象,某些类的实例) ,请执行以下操作:
var testObj:Object = {id:1,name:'DumDum'};
var testObj2:Object = {id:2,name:'NumNum',data:[1,2,3,4,5,6,7,8,9],somethingComplex:{firstName:'Num',lastName:'Num'}};
trace(isSimple(testObj).length == 0);//prints true
trace(isSimple(testObj2).length == 0);//prints false
trace(isSimple(testObj2));
function isSimple(obj:*):Array{
var complex:Array = [];
for(var prop in obj){
if(!(obj[prop] is String || obj[prop] is int || obj[prop] is uint || obj[prop] is Number || obj[prop] is Boolean))
complex.push({prop: obj[prop]});
}
return complex;
}
如果你想获得成员(与对象相关联的变量)的数量,这是很容易得到:
var Ob:Object = {};
Ob.SomeProp="xxx";
Ob.SomeOtherProp="zzz";
trace(getMembersNum(Ob));//prints 2
function getMembersNum(obj:*):int{
var result:int = 0;
for(var prop in obj) result++;
return result;
}
中你可以写成这样您实用程序包/类可能是这样的:
public static function get numMembers(obj:*):int{
var result:int = 0;
for(var prop in obj) result++;
return result;
}
HTH
你不需要知道什么时候停下来,你只需要数人怎么倍的循环。 – 2010-01-07 12:03:55
answer updated bellow – 2010-01-07 12:04:36