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

Ser*_*rge 1 actionscript-3

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

出于某种原因,this在ActionScript 3中循环遍历失败属性.

我尝试过类似的东西:

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];
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

请建议将对象属性复制到我的类的实例的智能方法.

小智 5

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

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

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