Essential ActionScript 3.0 読書メモ 第13回 値渡しと参照渡し

this.title = subject;

というコードの中では、titleという変数にsubjectという変数を代入している。代入の結果は、変数の型によって異なる。

代入元の変数がString, Boolean, Number, int, uintのインスタンスである場合には、代入先の変数に代入元の変数が直接コピーされる(値渡し)。代入の後には、メモリー上に2つの同じ値が、別の領域に確保される。この変数は互いに無関係なので、代入後に一方の値が変わってももう一方は影響を受けない。
例:

x = 1;
y = x; // yは1
x = x + 1; // xは2, yは1のまま

対して、上記以外のActionScript内蔵クラスのインスタンスや、自作クラスのインスタンスを代入した場合には、ActionScriptは2つの変数を関連付ける(参照渡し)。代入の後でも、代入元の値がメモリー上に2つ確保されるわけではない。メモリー上の領域は同一で、2つの変数の両方がその領域を参照する。片方の変数に対して加えられた変更は、もう一方の変数にも影響を及ぼす。
例:

var a = new Blog();
var b = a;
a.title = “my first blog”;
trace(b.title); // “my first blog”

このコードでは、Blogオブジェクトが1つだけ生成され、aとbの双方がBlogオブジェクトを参照している(traceは出力テスト用の組み込み関数。本文中には出てきていないが説明のために使用)。aに加えた変更の結果、参照先のBlogオブジェクトの内容が変更され、Blogオブジェクトを参照しているbの出力も影響を受ける。

今日の進捗(昨日と合算):240→254/4343

コメントを残す