トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     「値による代入」と「参照による代入」について
投稿するにはまず登録を

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
youich
Åê¹ÆNo.12758
投稿日時: 2004-11-27 0:13
職人
居住地: kobe
投稿: 349
使用環境:
Re: 「値による代入」と「参照による代入」について
引用:

onsk72さんは書きました:
オブジェクトや配列の「値による代入」をしたいのですが、代入演算子「=」で代入すると、
「参照による代入」になってしまいますよね?

-----------------------------------------------------------
var obj1:Object = new Object();
obj1.test = "あいうえお";
var obj2:Object = obj1;
obj2.test = "かきくけこ";
trace("obj1.test = " + obj1.test); //出力:obj1.test= かきくけこ
trace("obj2.test = " + obj2.test); //出力:obj2.test= かきくけこ
-----------------------------------------------------------

新しくオブジェクトや配列を定義して、中身を1つずつ代入すれば参照ではなくなるのですが、
もっと簡単な方法はないのでしょうか?

mx.utilsにObjectCopyというクラスがありました。
var dstObject = mx.utils.ObjectCopy.copy(srcObject);
という使い方のようです。

しかしObjectCopyのソースを見ていただくと解りますが
インスタンスレベルで定義されたfunctionはコピーされません。
またArrayのArrayはシャロウーコピーになります。
obj = {};
obj.func = function(){
	trace('obj.func');
}
obj.arr= [['hello'],[['mac'],['Apple']]];


oo = mx.utils.ObjectCopy.copy(obj);

trace(oo.arr); // hello,mac,Apple
obj.arr[1][0] = "OSX";
trace(oo.arr); // hello,OSX,Apple
oo.func(); // not execute!!


----------------
- yo

フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
   「値による代入」と「参照による代入」について onsk72 2004-11-24 16:06
     Re: 「値による代入」と「参照による代入」について taka72 2004-11-24 16:41
       Re: 「値による代入」と「参照による代入」について onsk72 2004-11-24 17:28
         Re: 「値による代入」と「参照による代入」について taka72 2004-11-24 18:05
         Re: 「値による代入」と「参照による代入」について ike_chan 2004-11-24 18:17
           Re: 「値による代入」と「参照による代入」について onsk72 2004-11-24 18:45
             Re: 「値による代入」と「参照による代入」について taka72 2004-11-24 19:01
   » Re: 「値による代入」と「参照による代入」について youich 2004-11-27 0:13

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops