2013-06-29 66 views

回答

3

你可以滾你自己,假定對象是一個動態對象:

public function getObjectProperty(object:Object, property:String):Object 
{ 
    var parts:Array = property.split("."); 
    if(parts && parts.length == 2 && object && object[parts[0]] && object[parts[0]][parts[1]]) 
    { 
     return object[parts[0]][parts[1]]; 
    } 
    return null; 
} 

這裏是另外一個,將與不同的字符串工作:

private function test(e:Event = null):void 
{ 

    var obj:Object = { 
     "child": { 
      "property":1 
     }, 
     "anotherproperty": 2 
    }; 

    var test1:Object = getObjectProperty(obj, "anotherproperty"); 
    var test2:Object = getObjectProperty(obj, "child.property"); 
} 

public function getObjectProperty(object:Object, property:String):Object 
{ 
    var parts:Array = property.split("."); 
    var returnProp:Object = null; 

    for (var i:int = 0; i < parts.length; i++) 
    { 
     if(object[parts[i]]) 
     {    
      returnProp = object[parts[i]]; 
      object = returnProp; 
     } 
     else 
      return null; 
    } 

    return returnProp; 
} 
+0

我知道。並已經寫了一個。但我在想是flex sdk中存在的任何類似的函數。 –

+0

不是我所知道的。 –

+0

你說得對。這工作。但是我建議在修改循環中的對象之前用ObjectUtil.copy()創建對象副本,以保留對象實例。 –