クラス(class)


DESC 言語構文にはクラスはないが Object 型に任意のプロパティを設定することで クラスの機能を実装できる。
var o = {}; // attribute を追加 o.test = 1; // attribute を削除 delete o.test; // 関数オブジェクトを attribute に指定することで メソッドらしく利用する。 o.method = function() { return o.test + 1 } o.method();
コンストラクタもどきの関数を作成して Object を返す。
function create( i ) { // メンバ変数とメソッド o.test = i; o.method = function() { return o.test + 1 } return o; } var o = create( 10 ); o.method();



new


SYNTAX new constructor[( [arguments] )] POINT 上のコンストラクタもどきの処理を new 演算子を使うことで自動化できる。 new 演算子は次の処理を実行する
[.] メンバを持たないオブジェクトを作成して、その参照を返す。 [.] 次に作成したオブジェクトを this ポインタとしてコンストラクタ関数にわたしてコールする。
new 演算子をつかうと次のように簡略化できる。
// コンストラクタ関数 function MyObject( i ) { // new 演算子によって作成された Object の参照は this として渡される。 this.test = i; this.method = function() { return o.test + 1; } } var o = new MyObject( 10 ); o.method();
コンストラクタは、指定された引数でオブジェクトを初期化できる。
// メンバをもたない Object を作成 var o = new Object; var a = new Array(); // 指定した引数で初期化 var d = new Date( "Jan 5 1996" );



クラスメソッド


function Object() { // instance 変数 this.i = 10; this.s = "test"; // class 変数として 関数を設定する Object.prototype.print = function() { p( "call method" ); p( this.i ); p( this.s ); } } { var o = new Object(); o.print(); }
function() を使ってクラスを定義する。
function Command( path ) { // メンバ変数 this.path = path; // メンバ関数 this.run = function() { WScript.echo( "run path = " + path ); } }
利用する。
var cmd = new Command( "d:/test.txt" ); cmd.run();