ActionScript3のObjectクラスの結合について質問させて下さい。


知りたいのは以下のコードで得られるobj3経由でobj1,obj2のプロパティにアクセスする方法です。
個人的にはobj3["name"], obj3[0]["age"]などでアクセスできる事を
期待したのですが駄目でした。
---
var obj1:Object = { name:"taichino", age:25 };
var obj2:Object = { sex:"male", height:185 };
var obj3:Object = obj1 + obj2; // {name:"taichino",age:25,sex:"male",height:185}を期待
---

fdbでobj3の内容を出力したところ以下のように出力されます。
---
(fdb) p obj3.
$1 = obj3 = "[object Object][object Object]"
---

またobj1,obj2から{name:"taichino",age:25,sex:"male",height:185}を
作る方法で以下よりも良い物があれば、合わせて教えて頂けるとありがたいです。
var obj3:Object = obj1;
for (var key:String in obj2) {
obj3[key] = obj2[key];
}


以上、よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:2009/06/09 10:18:32
  • 終了:2009/06/16 10:20:02

回答(2件)

id:IlO10l0Il No.1

IlO10l0Il回答回数1757ベストアンサー獲得回数812009/06/10 17:38:52

ポイント35pt

http://help.adobe.com/ja_JP/ActionScript/3.0_ProgrammingAS3/WS5b...

こちらはいかがでしょうか。

id:taichino0730

ありがとうございます。

ただ、obj3のプロパティにアクセスする方法がやはり解りません。

obj3は結合配列ではないような気がします。

(キーによるアクセスが出来ないような気がします。)

さらに、例えば

for each (var item:Object in obj3) {

trace(item);

}

のように内容を列挙しようとしてもできません。

またマニュアルの+演算子の項目を見てみたのですが、

Object同士の+結合が何を表すのかという事は記述されていませんでした。

一体obj3は何者なんでしょうか。。

2009/06/11 18:39:55
id:rryu No.2

りゅう回答回数30ベストアンサー獲得回数22009/06/13 15:29:02

ポイント35pt

出力結果からすると、obj3の中味は文字列になっています。

マニュアルの説明には+演算子のオペレータが両方とも数値でも文字列でもない場合は数値に変換されるとあるのですが、実際は両方とも文字列化されて連結されるようです。


http://help.adobe.com/ja_JP/AS3LCR/Flash_10.0/operators.html#add...

1 つの式がストリングの場合、他の式はすべてストリングに変換され、加算の代わりに連結されます。式がストリングでも数値でもない場合は、Flash® Player により数値に変換されます。


obj1とobj2を合成したオブジェクトを作る方法ですが、基本的にはforでプロパティをコピーして行くしかありません。

合成できるオブジェクトというクラスを作ると見た目的には良い感じになります。

class MergedObject
{
    public function merge(obj) : void 
    {
        for (var key:String in obj) {
            this[key] = obj[key];
        }
    }
}

var obj3:MergedObject = new MergedObject();
obj3.merge(obj1);
obj3.merge(obj2);
id:taichino0730

ありがとうございます。

やはりプロパティを1つずつコピーしないといけないのですね。

了解致しました。

2009/06/16 01:29:22

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません