Microsoft® JScript
独自のオブジェクトの作成
 チュートリアル  


オブジェクトのインスタンスを作成するには、まず、必要に応じてプロパティとメソッドを設定してオブジェクトを定義する必要があります。たとえば、次の例では、パスタを表す pasta オブジェクトを定義しています。この例では、現在のオブジェクトを参照する this キーワードを使用しています。

function pasta( grain, grain2, width, shape, shapenum, extent, egg )
{
  this.length = 7;   // オブジェクトのプロパティの数。この数には、length プロパティ自体は含まれません。
  this.grain = grain;   // 原料となっている粉の名前 (文字列)。
  this.grain2 = grain2;   // ほかの粉も使っている場合は、その名前 (文字列)。
  this.width = width;     // 幅 (数値)。
  this.shape = shape;   // 断面の形 (文字列)。
  this.shapenum = shapenum;  // 登録済みの形の場合は、その登録番号 (数値)。
  this.extent = extent;    // 長さ (数値)。
  this.egg = egg;  // つなぎとして卵黄を使用しているかどうか (ブール値)。
}
オブジェクトを定義した後、new ステートメントを使ってそのインスタンスを作成します。

var spaghetti = new pasta("小麦", "", 0.2, "", 9, 30, true);
var linguine = new pasta("小麦", "", 0.3, "楕円", 17, 30, true);
オブジェクトのインスタンスには、プロパティを追加することができます。インスタンスにプロパティを追加しても、そのインスタンスが変更されるだけで、元のオブジェクトの定義や同じオブジェクトのほかのインスタンスにはプロパティは (明示的に追加しない限りは) 追加されません。オブジェクトのすべてのインスタンスにプロパティを追加するには、オブジェクトの定義でプロパティを追加する必要があります。

// spaghetti にプロパティを追加します。
spaghetti.color = "薄い麦わら色";
spaghetti.drycook = 7;
spaghetti.freshcook = 0.5;

var chowFun = new pasta("", "", 3, "平ら", , 12, false); 
/*
この場合、chowFun オブジェクト、linguine オブジェクト、pasta オブジェクトのいずれにも、spaghetti オブジェクトに追加した 3 つのプロパティは追加されていません。
*/
オブジェクトにメソッドを追加する
オブジェクトの定義には、メソッドも追加することができます。次の例では、1 つの文字列配列と 1 つのメソッドを持つオブジェクトを作成します。このメソッドは、オブジェクトが持つ配列に文字列を追加します。配列は、その文字列を追加するためにサイズが大きくなります。このメソッドを使用すると、このオブジェクトの各インスタンスを制限なく拡張することができます。

function addItem(newItem)  // 配列を拡張する関数を定義します。
{
    this.length += 1;  // 配列の length プロパティをインクリメントします。
    this[(this.length-1)] = newItem;  // 新しい項目を追加します。このとき、インデックス番号も調整します。
}

function shoppingList(firstItem) // "買い物リスト" オブジェクトを定義します。
{
    this.length = 2;  // このオブジェクトのプロパティの数。この数には、length プロパティは含まれません。
    this.addItem = addItem;   // メソッドして、addItem 関数をこのオブジェクトに入れます。
    this[(this.length-1)] = firstItem;  // 1 つ目の項目の番号を 1 とします。
}

var myList = new shoppingList("牛乳");
myList.addItem("");  // メソッドを使って卵を追加します。卵の項目番号は 2 となります。
myList.addItem("パンノキ");  // パンノキは、項目 3 となります。
この時点で、配列の内容は次のようになっています。 このインデックスの割り当ては、通常の配列で与えられる数値のインデックス番号と異なります。この配列で for...in ループを実行すると、ループはここに示した順で実行されます。ループ変数の初期値は 0 ではなく "length" になります。


© 1997 Microsoft Corporation.