コンストラクタ関数

広告

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

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

パラメータ:
  val  基本データ型の値

Objectクラスのオブジェクトを作成するコンストラクタ関数です。引数を指定しなかった場合はプロパティが空のオブジェクトを作成します。

var obj = new Object();

これはオブジェクトリテラルを使って次のように記述したものと同じです。

var obj = {};

2番目のコンストラクタ関数では引数に基本データ型の値を指定します。基本データ型の値とは数値、文字列、論理値のいずれかの値で、この場合は基本データ型に対応するラッパークラス(Numberクラス、Stringクラス、Booleanクラス)のオブジェクトを作成します。

var num_obj = new Object(10);
var str_obj = new Object("Hello");
var bool_obj = new Object(true);

これは次のように各ラッパークラスのコンストラクタ関数をnew演算子を付けて呼び出した場合と同じです。

var num_obj = new Number(10);
var str_obj = new String("Hello");
var bool_obj = new Boolean(true);
関数として呼び出した場合

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

var obj = Object();
サンプルコード

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

<!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 />");
}

var obj = new Object();
obj.width = 100;
obj.height = 80;

document.write("<p>");

for (var pname in obj){
  print(pname + " = " + obj[pname]);
}

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

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

p1-1

( Written by Tatsuo Ikura )