可変長引数付きコンストラクタ

コンストラクタは、可変長引数(個数が決まっていない引数)を受け取ることもできる。

固定長引数(個数が決まっている引数)の受け渡しについては、固定長引数付きコンストラクタのページへ。

構文

function コンストラクタ名 () // コンストラクタを定義
{
    this.プロパティ名 =; // プロパティを定義
    this.メソッド名 = function ( 仮引数B1, 仮引数B2, 仮引数B3, … 仮引数BN ) { // メソッドを定義
        メソッド内処理文;
    }
    コンストラクタ名.arguments[0]; // 引数の配列の1つ目の要素にアクセス
    コンストラクタ名.arguments[1]; // 引数の配列の2つ目の要素にアクセス
    コンストラクタ名.arguments[2]; // 引数の配列の3つ目の要素にアクセス
}
var オブジェクト名 = new コンストラクタ名 ( 実引数A1, 実引数A2, 実引数A3, … 実引数AN ); // オブジェクトのインスタンスを作成
オブジェクト名.プロパティ名;  // プロパティを呼び出す
オブジェクト名.メソッド名( 実引数B1, 実引数B2, 実引数B3, … 実引数BN ); // メソッドを呼び出す

サンプル

<script type="text/javascript">
function PersonalData () // コンストラクタを定義
{
    if ( PersonalData.arguments[0] ) {
        this.$attendanceNumber = PersonalData.arguments[0]; // プロパティを定義
        this.$attendanceNumberWrite = function () { // メソッドを定義
            document.write( '出席番号:' + this.$attendanceNumber + '<br />' );
        }
    }
    if ( PersonalData.arguments[1] ) {
        this.$name = PersonalData.arguments[1]; // プロパティを定義
        this.$nameWrite = function () { // メソッドを定義
            document.write( '名前:' + this.$name + '<br />' );
        }
    }
    if ( PersonalData.arguments[2] ) {
        this.$area = PersonalData.arguments[2]; // プロパティを定義
        this.$areaWrite = function () { // メソッドを定義
            document.write( '出身地:' + this.$area + '<br />' );
        }
    }
}
var $PersonalData = new PersonalData( '13007', '日本太郎' ); // オブジェクトのインスタンスを作成
document.write( '出席番号:' + $PersonalData.$attendanceNumber + '<br />' );
document.write( '名前:' + $PersonalData.$name + '<br />' );
var $PersonalData = new PersonalData( '13020', '日本花子', '東京' ); // オブジェクトのインスタンスを作成
$PersonalData.$attendanceNumberWrite();
$PersonalData.$nameWrite();
$PersonalData.$areaWrite();
</script>

↓↓↓出力結果↓↓↓

スポンサード リンク

カテゴリー: JavaScript, ユーザー定義オブジェクト, リファレンス パーマリンク