Macromedia Flash非公式テクニカルノート

Function.prototype

ID: FN0212004 Product: Flash

Platform: All
Version: MX and above

シンタックス
myFunction.prototype

説明
プロパティ; 関数がコンストラクタとして実行されると、そのクラスが継承すべきプロパティやメソッドを備えたプロトタイプオブジェクトが自動的に生成されます。'prototype'プロパティは、そのプロトタイプオブジェクトを参照します。コンストラクタ関数から作成されたクラスのインスタンスは、プロトタイプオブジェクトからすべてのプロパティとメソッドを継承します。

'prototype'プロパティの参照は、書替え可能です。'prototype'に他のクラスのオブジェクト(インスタンス)を設定すると、そのコンストラクタから生成されるインスタンスは、設定したオブジェクトのクラスのすべてのプロパティとメソッドを継承します。また、'prototype'プロパティにプロパティやメソッドを設定すれば、そのクラスのインスタンスすべてに継承されます。


コンストラクタ関数myClassにArrayオブジェクトを継承させる場合には、つぎのように'prototype'プロパティを設定します。

// コンストラクタ関数の定義
function myClass() {
}
// Arrayオブジェクトを'prototype'に設定
myClass.prototype = new Array();
// テスト例
oMyObject = new myClass();
oMyObject.push(1);
oMyObject.push(0);
trace(oMyObject);  // 出力: 1,0
trace(oMyObject.length);  // 出力: 2
oMyObject.sort();
trace(oMyObject); // 出力: 0,1

'prototype'プロパティにメソッドを設定すれば、コンストラクタから生成されるインスタンスはすべてそのメソッドを継承します。

// コンストラクタ関数の定義
function myPoint(x, y) {
  this.x = x;
  this.y = y;
}
// 'prototype'にメソッドを定義
myPoint.prototype.getDistance = function() {
  return Math.sqrt(this.x*this.x+this.y*this.y);
};
// テスト例
oPointA = new myPoint(1, 1);
oPointB = new myPoint(1, 1.7320508);
trace(oPointA.getDistance());  // 出力: 1.4142135623731
trace(oPointB.getDistance());  // 出力: 1.99999999344516

Player
Flash Player 6以降。

関連項目
Function.apply  Function.call

_____

作成者: 野中文雄
作成日: 2002年12月31日


Copyright © 2001-2006 Fumio Nonaka.  All rights reserved.