1

クラスには、特定のオブジェクトからインスタンスプロパティを更新するメソッドがあります。

何らかの理由thisで、ActionScript3の失敗のプロパティをループします。

私は次のようなことを試しました:

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このように、プロパティがまったくないかのように、ループが実行されることはありません。

オブジェクトプロパティをクラスのインスタンスにコピーするスマートな方法についてアドバイスしてください。

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つのうちソースオブジェクトに1つのプロパティのみを渡すと、ターゲットオブジェクトのすべてのプロパティを解析する意味)。ただし、コンテキストはあなたの場合とは異なる場合があります。

于 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 に答える