AS3:如何循环这个属性?喜欢(var s in this)

时间:2012-05-23 15:10:54

标签: actionscript-3

类有一个方法可以从给定的Object更新其实例属性。

由于某些原因,在ActionScript 3中循环遍历this的属性

我尝试过类似的事情:

class myThing() {
    public var A:String;
    public var B:String;
    public var C:String;
    ...
    public function bindToObject( obj:Object){
        for( var s in this){
            if( obj.hasOwnProperty(s)) this[s] = obj[s];
        }
    }
}

这样循环永远不会执行,好像this根本没有属性。

请建议将对象属性复制到我的班级实例的智能方法。

2 个答案:

答案 0 :(得分:5)

你可能想尝试反过来做。含义,解析源对象的属性,并将其值分配给目标对象。我自己调查了这个问题,这是我实现该方法的方法:

private function parseData(data:Object):void
{
    for (var property:String in data)
        if (this.hasOwnProperty(property))
            this[property] = data[property];
}

它与 bindToObject 方法的意图非常相似,除了方法解析参数对象的事实。选择这种方式的原因是,在我的上下文中,目标对象的所有属性都被认为是可选的(例如,如果我只为源对象传递一个属性,例如3个,则不会感觉来解析所有目标对象的属性)。但是,在您的情况下,上下文可能会有所不同。

答案 1 :(得分:2)

class myThing() {
    public var A:String;
    public var B:String;
    public var C:String;
    ...

    setPropertyIsEnumerable("A");
    setPropertyIsEnumerable("B");
    setPropertyIsEnumerable("C");

假设您的课程延长Object