ASのビルトイントップレベルFunction objectとビルトイントップレベルobjectにはどういったものがあるか見ていくことにしましょう。
青で書かれたものがビルトイントップレベルFunction object、緑で書かれたものがビルトイントップレベルobjectです。継承という言葉が出てきていますが、今は気にしないで下さい。
ここで重要なのは、ビルトイントップレベルFunction objectは主にクラスコンストラクタとして使われ、ビルトイントップレベルobjectはそれぞれのプロパティとして定義されているプロパティ(例えば、Math.random)をユーザに提供するものだということです。
ビルトイントップレベルFunction objectに関しては、Objectを例に取ると、
例12
o1 = new Object();
というように使われます。つまり、new演算子を使ってObjectというクラスコンストラクタからクラスインスタンスを生成するわけです。そしてそのクラスインスタンス(ここではo1)はobjectです。この段階ではo1は全てのobjectが持つビルトインプロパティ以外のプロパティは持っていません。
又ちなみに、Objectクラスコンストラクタ自体は、内部的に、
_global.Object = function () {
//ネイティブコード
}
と定義されていると言って良いでしょう。
又、ビルトイントップレベルobjectに関しては、Mathを例に取ると、
例13
myVar = Math.random()*5;
というように、主にそのビルトイントップレベルobjectのプロパティであるメソッド(ここではrandom)を実行するのに用いられます。
ちなみに、Math自体は内部的に、
_global.Math = new Object(); //Math自体がObjectクラスのインスタンス
Math.random = function () {
//ネイティブコード
}
//以下、Mathが持つ他のメソッドもrandom同様に定義
Math.PI = 3.14159265358979;
//以下、Mathが持つ他の定数もPI同様に定義
と定義されていると言って良いでしょう。
ここで「プロパティ」という言葉と「メソッド」という言葉について少し整理しておきます。オブジェクトが所有するものは全てプロパティですが、そのうちFunction objectであるものはメソッドとも呼ばれます。そしてActionパネルではそれらはメソッドとして分類されています。つまり、Math.randomはビルトイントップレベルobjectのひとつであるMathのプロパティであり、random自体がFunction objectであることからメソッドとも呼ばれ、ActionパネルではMathのメソッドの欄に属しています。
では次に、全てのFunction objectのビルトインプロパティであるprototypeについて見ていくことにしましょう。