Platform: All
Version: 5.0 and above
*注記
このプロパティはドキュメント化されていません。
シンタックス
myObject.constructor
説明
プロパティ; オブジェクト(インスタンス)の初期化に使用されたコンストラクタ関数を参照します。
コンストラクタがプロトタイプオブジェクトを生成すると、その参照が'prototype'プロパティに格納されます。そして、プロトタイプオブジェクトには、'constructor'プロパティが設定されます。'constructor'プロパティは、生成されたプロトタイプオブジェクトのコンストラクタ関数を参照します。
例
コンストラクタ関数は、オブジェクトのクラスを定義します。ですから、クラスの'prototype'に設定された'constructor'の値は、クラスのコンストラクタ関数に等しくなります。
trace(Array.prototype.constructor == Array);
// 出力ウィンドウの結果
true
*注記
Flash 5では、等価演算子'=='で'function'同士を比較すると、つねに'true'を返すという問題があります。ですから、上記のスクリプトは、テストとして使用することができません。
ただし、他のクラスを'new'演算子で'prototype'に設定して継承すると、プロトタイプオブジェクトが上書きされ、'prototype'の'constructor'プロパティも書替えられます。
function Parent() {
}
function Child() {
}
Child.prototype = new Parent();
trace(Child.prototype.constructor == Child); // 出力: false
trace(Child.prototype.constructor == Parent); // 出力: true
もっとも、オブジェクト(インスタンス)の'consturctor'プロパティは、オブジェクトを直接生成したコンストラクタ関数を参照します。なお、この実装は、JavaScriptとは異なっています。
function Parent() {
}
function Child() {
}
Child.prototype = new Parent();
oChild = new Child();
trace(oChild.constructor == Child); // 出力: true
trace(oChild.constructor == Parent); // 出力: false
trace(oChild.__proto__.constructor == Parent); // 出力: true
Player
Flash Player 5以降。
関連項目
Function.prototype Object.__proto__
参考文献
Colin Moock『ActionScript:
The Definitive Guide』O'REILLY
David Flanagan『JavaScript第3版』オライリー・ジャパン