クラスの作り方

クラスの宣言

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 + "<br />num2=" + this.num2 + "<br />") ;
    }
}

var test = new test_t() ;
test.dump() ;
num1=123
num2=456
test_tクラスを作成し、dump関数でnum1、num2値を表示。
クラス内から値が参照可能なので、正しい値が表示される。

document.write("num1=" + test.num1 + "<br />num2=" + test.num2 + "<br />") ;

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 + "<br />num2=" + test.num2 + "<br />") ;

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

lang/javascript/クラスの作り方.txt · 最終更新: 2018/03/18 09:56 (外部編集)
 
特に明示されていない限り、本Wikiの内容は次のライセンスに従います: CC Attribution-Share Alike 4.0 International
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki