1

一个类有一个从给定对象更新其实例属性的方法。

由于某种原因,在 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根本没有属性一样。

请就将 Object 属性复制到我的班级实例的智能方法提出建议。

4

2 回答 2

6

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

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

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

于 2012-05-23T15:24:15.587 回答
2
class myThing() {
    public var A:String;
    public var B:String;
    public var C:String;
    ...

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

假设你的类扩展Object

于 2012-05-23T15:23:51.983 回答