参照渡しはシンボリックリンクを渡すようなもの


関数の引数に Object 型の変数を渡すと、それは参照渡しとして評価され、さも実体かのように操作できる。しかし、関数内部で参照値そのものに別のオブジェクトを代入しても実体には反映されない。参照値はシンボリックリンクのようなものだからだ。

function doSomething(obj:Object):Void {
obj.prop = 200;
obj = null;
}
var hoge:Object = new Object();
hoge.prop = 100;
this.doSomething(this.hoge);
trace(this.hoge.prop);  //200

上記のスクリプトでは trace の結果に undefined を期待してしまう。だが null の代入が行われた時点で、以降、obj は参照値ではなく関数内のローカル変数として振る舞う。

カテゴリー: Flash   パーマリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>