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