コンストラクタは、可変長引数(個数が決まっていない引数)を受け取ることもできる。
固定長引数(個数が決まっている引数)の受け渡しについては、固定長引数付きコンストラクタのページへ。
構文
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 ); // メソッドを呼び出す
{
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>
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>
↓↓↓出力結果↓↓↓