JavaScriptでクラスを作る場合、function命令を使いそれっぽく実装します。
function クラス名(コンストラクタに渡すパラメータ) { }
例
function test_t(param1,param2) { }
クラスをnewすると上から実行されることを利用し、コンストラクタの代わりにします。
デストラクタは実装する手段がありません(開放処理が不要な言語なのでなくても問題ない)。
function クラス名(コンストラクタに渡すパラメータ) { { // コンストラクタ } }
publicな関数にはthisを付けます。
function test_t(param1,param2) { { // コンストラクタ } this.public_func = function() { // thisを付けるとpublicな関数 } private_func = function() { // thisがないとprivateな関数 } }
関数と同じように、publicな変数にはthisを付けます。var は付けない。
function test_t() { var num1 = 123 ; this.num2 = 456 ; this.dump = function() { document.write("num1=" + num1 + "<br />num2=" + this.num2 + "<br />") ; } }
var test = new test_t() ; test.dump() ;
num1=123 num2=456test_tクラスを作成し、dump関数でnum1、num2値を表示。
document.write("num1=" + test.num1 + "<br />num2=" + test.num2 + "<br />") ;
num1=undefined num2=456クラスの外から値を参照した場合、thisが付いていないnum1は参照できず
test.num1 = 12 ; test.num2 = 45 ; test.dump() ;
num1=123 num2=45クラスの外から、num1、num2の値を書き換えて、dump関数で書き換わったか確認。
document.write("num1=" + test.num1 + "<br />num2=" + test.num2 + "<br />") ;
num1=12 num2=45再度クラスの外から値を表示してみると、書き換えた値が表示されます。
//***************************************************************************** // サンプルクラス //***************************************************************************** function sample(param) { //------------------------------------------------------------------------- // 外部に公開(変数) //------------------------------------------------------------------------- this.pub ; //------------------------------------------------------------------------- // 外部に非公開(変数) //------------------------------------------------------------------------- var local ; //------------------------------------------------------------------------- // 外部に公開(関数) //------------------------------------------------------------------------- //--------------------------------------------------------------------- // コンストラクタ //--------------------------------------------------------------------- { } //--------------------------------------------------------------------- // //--------------------------------------------------------------------- this.func = function(param) { } //------------------------------------------------------------------------- // 外部に非公開(関数) //------------------------------------------------------------------------- //--------------------------------------------------------------------- // //--------------------------------------------------------------------- func = function(param) { } } ; // function sample