コンストラクタ関数

広告

Arrayクラスのコンストラクタ関数は次の3つが用意されています。

Arrayクラスのオブジェクトを生成します。

パラメータ:
  int  要素の数
  val  要素の値
例外:
  RangeError  要素の数に負の値か最大の数を越えた値を指定した場合

Arrayクラスのオブジェクトを作成するコンストラクタ関数です。1番目のコンストラクタ関数では要素が空の配列を作成します。

var ary = new Array();

これは配列リテラルを使って次のように記述したものと同じです。

var ary = [];

2番目のコンストラクタ関数では要素の数を指定して配列を作成します。

var ary = new Array(3);

これは配列リテラルを使って次のように記述したものと同じです。

var ary = [,,];

この時、各要素の値は未定義値(undefined)となります。

3番目のコンストラクタ関数では要素に格納する値を指定して配列を作成します。配列の要素の数は指定した値の数となります。

var ary = new Array("Tokyo", "Osaka", "Nagoya");

これは配列リテラルを使って次のように記述したものと同じです。

var ary = ["Tokyo", "Osaka", "Nagoya"];
関数として呼び出した場合

Arrayクラスの場合、new演算子を付けずにコンストラクタ関数を呼び出した場合もnew演算子を付けて呼び出した場合と同じようにArrayクラスのオブジェクトを作成します。

var ary = Array();
例外の発生

要素の数としてインデックスの最大値である232-1を越えた整数を指定した場合、又は負の整数を指定した場合はRangeError例外が発生します。

次の例では要素の数として「-1」を指定していますのでRangeError例外が発生します。

try{
  var ary = new Array(-1);
}catch(e){
  alert(e);
}
サンプルコード

では簡単なサンプルで試してみます。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>JavaScript テスト</title>
</head>
<body>

<script type="text/javascript" src="./js/script1_1.js">
</script>

</body>
</html>
function print(str){
  document.write(str + "<br />");
}

document.write("<p>");

var ary = new Array("東京", "大阪", "名古屋");
for (var i = 0 ; i < ary.length ; i++){
  print("array[" + i + "] = " + ary[i]);
}

document.write("</p>");

document.write("<p>");

try{
  var ary2 = new Array(-1);
}catch(e){
  print(e);
}

document.write("</p>");

上記を実際にブラウザ見てみると次のように表示されます。

p1-1

( Written by Tatsuo Ikura )