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

July 04, 2006category: Flash 

関数の引数に 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 は参照値ではなく関数内のローカル変数として振る舞う。

comments (0)このエントリーを含むはてなブックマークはてなブックマーク - 参照渡しはシンボリックリンクを渡すようなもの

comments