Actionscript 3 要在ActionScript3中获取属性链的现有类?

Actionscript 3 要在ActionScript3中获取属性链的现有类?,actionscript-3,flash,apache-flex,flex4,Actionscript 3,Flash,Apache Flex,Flex4,Flash或Flex中是否存在从对象的属性链中获取值的现有类 例如,类似这样的内容: private function labelFunction(item:Object, column:GridColumn):String { // where dataField equals "fields.status.name" var value:String = PropertyChain.getValue(field, column.dataField); retur

Flash或Flex中是否存在从对象的属性链中获取值的现有类

例如,类似这样的内容:

private function labelFunction(item:Object, column:GridColumn):String {
     // where dataField equals "fields.status.name"
     var value:String = PropertyChain.getValue(field, column.dataField);
     return value;
}
更新~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我在Binding类中也发现了这个私有方法,它可能在自定义类中使用:

/**
 *  @private
 */
private static function getFirstWord(destStr:String):String
{
    // indexPeriod and indexBracket will be equal only if they
    // both are -1.
    var indexPeriod:int = destStr.indexOf(".");
    var indexBracket:int = destStr.indexOf("[");
    if (indexPeriod == indexBracket)
        return destStr;

    // Get the characters leading up to the first period or
    // bracket.
    var minIndex:int = Math.min(indexPeriod, indexBracket);
    if (minIndex == -1)
        minIndex = Math.max(indexPeriod, indexBracket);

    return destStr.substr(0, minIndex);
}

我认为没有现成的功能。但是构建一个对象非常容易,并且不需要限制为通用的
对象
源,因为任何对象的任何成员都可以使用方括号表示法按名称检索。此简单版本不进行任何验证:

public static function getByName(root:*, member:String):* {
    var memlist:Array = member.split('.');
    var temp:* = root;
    for(var i:uint = 0; i < memlist.length; i++)
        temp = temp[memlist[i]];
    return temp;
}

// And you can use this even on strongly-typed values, such as a MovieClip:
trace("stageWidth =", SomeUtil.getByName(mc, "stage.stageWidth"));
公共静态函数getByName(根:*,成员:字符串):*{
var memlist:Array=member.split('.');
变量温度:*=根;
对于(变量i:uint=0;i
我认为没有现成的函数。但是构建一个对象非常容易,并且不需要限制为通用的
对象
源,因为任何对象的任何成员都可以使用方括号表示法按名称检索。此简单版本不进行任何验证:

public static function getByName(root:*, member:String):* {
    var memlist:Array = member.split('.');
    var temp:* = root;
    for(var i:uint = 0; i < memlist.length; i++)
        temp = temp[memlist[i]];
    return temp;
}

// And you can use this even on strongly-typed values, such as a MovieClip:
trace("stageWidth =", SomeUtil.getByName(mc, "stage.stageWidth"));
公共静态函数getByName(根:*,成员:字符串):*{
var memlist:Array=member.split('.');
变量温度:*=根;
对于(变量i:uint=0;i
如果您有一个
对象和一个属性链,为什么不能直接访问该值?object.chain.of.properties或object[stringContainingPropertyChain]此字段[“fields.status.name”]不起作用。至于直接访问不符合问题目的的值:GridColumn类允许您在dataField属性中输入属性链字符串。所以我想重用它,因为在运行时,我不想将一个值硬编码到我创建的每个项目渲染器中。现在我得到了它,将属性链归集为一个带点的字符串是行不通的。下面的答案是正确的。如果您有一个
对象和一个属性链,为什么不能直接访问该值?object.chain.of.properties或object[stringContainingPropertyChain]此字段[“fields.status.name”]不起作用。至于直接访问不符合问题目的的值:GridColumn类允许您在dataField属性中输入属性链字符串。所以我想重用它,因为在运行时,我不想将一个值硬编码到我创建的每个项目渲染器中。现在我得到了它,将属性链归集为一个带点的字符串是行不通的。下面的答案是正确的。太好了。在接受这个答案之前,我会给它更多的时间。太好了。在接受这个答案之前,我会给它更多的时间。