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