xyプロパティ値が等しい新たなインスタンスを返す。y=y座標値)]」という文字列表現で返す。Pointクラスの基本的な中身Pointクラスにコンストラクタとふたつずつのプロパティおよびメソッドを定めると、基本は以下のようなクラス定義になります。コンストラクタ(Point())からは、別に初期化のメソッド(initialize())を呼出しています。初期化のメソッドは、引数があればその値を、なければデフォルト値をインスタンスのプロパティに定めます。")]";}クラスが備えるべきメソッド(clone()とtoString())は、JavaScriptではコンストラクタ関数のFunction.prototypeプロパティに定めます。インスタンスにプロパティが与えられていない場合のプロパティ(xとy)のデフォルト値も、ここに設定しています。Suiteのクラスに名前空間が設定される」参照)。Pointクラスはつぎのコード001のように、この名前空間にコンストラクタ関数を定め、プロパティやメソッドを備えています。使った条件判定」02「初期化されていない変数に値を与える」参照)。")]";}EaselJSライブラリのPointクラスは、実質的にこのコード001の中身になります。書き方が煩わしく、とくにコンストラクタ関数のプロトタイプオブジェクト(createjs.Point.prototype)を長々と書連ねるのが気になります。名前のない関数でPointクラスを定めるコンストラクタ関数やそのプロトタイプオブジェクト(Function.prototypeプロパティ)の参照は、つぎのように変数を宣言して予め与えておけば、コードが見やすくなります。備えるべきプロパティやメソッドが増えても、コードは楽に書けます。Point;ただし、グローバルにvar宣言した変数は、納めた値や参照は消せても、存在そのものを除くことはできません。多くのクラスを定めるときは、変数が重複するおそれもありますし、要らないものが残ってしまうのはできるかぎり避けたいところです。var宣言が関数の中であればローカル変数になりますので、外の変数との重複は気にしなくて済み、外から参照されるおそれもありません。Suiteのクラスは、後掲コード002のように名前のない関数の中で定められています。Point;}());名前のない関数の中で、コンストラクタはローカル変数(Point)に定めています(第2〜3行目)。この名前のない関数そのものは、変数に入れていません。メモリには残らないということです。そこで、書き終わりに括弧()を加えて直ちに呼出しています(第20行目)。つぎのような呼出し方です。}()ローカル変数(Point)のコンストラクタ関数も、名前のない関数の実行が済めばそのままではメモリから消えます。そこで、関数の最後に名前空間(createjs)に加えているのです(第19行目)。名前空間は関数の外に定められていますから、コンストラクタの参照は保たれます(第1行目)。Point;}());コンストラクタの参照が残ってさえいれば、プロトタイプオブジェクトに定めたプロパティやメソッドも使えます。名前のない関数内でのvar宣言は、ローカル変数(Pointとp)になりますので、関数の外からは見えなくなります(第3および第6行目)。