toStringメソッド

広告

toStringメソッドは対象のオブジェクトを文字列に変換した結果を返します。

オブジェクトの文字列表現を返します。

パラメータ:
  無し
戻り値:
  オブジェクトの文字列表現

基本データ型の値やオブジェクトは文字列に変換されることがあります。例えば「+」演算子の左辺または右辺が文字列であった場合にもう片方の値は自動的に文字列に変換されます。(詳しくは「文字列への変換」を参照して下さい)。

このような場合にオブジェクトはtoStringメソッドを自動的に呼び出し、そのオブジェクトの文字列表現を取得して変換します。

次の例を見て下さい。

var obj = new Object();
alert(obj);

この場合、自動的にtoStringメソッドが呼び出されて次のように表示されます。

[object Object]

これは次のように明示的にtoStringメソッドを呼び出した場合と同じです。

var obj = new Object();
alert(obj.toString());

Objectクラスで定義されているtoStringメソッドは上記のように[object クラス名]を返します。Objectクラスを継承しているクラスでtoStringメソッドを再定義しなかった場合は同じように[object クラス名]のように文字列を表現を返します。ただ多くのクラスではtoStringメソッドを再定義していますのでクラス毎にtoStringメソッドがどのような値を返すのかは異なっています。

例えばArrayクラスのオブジェクトで試してみます。

var ary = new Array("Tokyo", "Osaka");
alert(ary.toString());

この場合、次のように表示されます。

Tokyo,Osaka

ArrayクラスのtoStringメソッドでは、オブジェクトの文字列表現は要素の各値を文字列表現にした後でカンマでつなげたものを返すように定義されています。

サンプルコード

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

<!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/script3_1.js">
</script>

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

var obj = new Object();
obj.width = 100;
var ary = new Array("Tokyo", "Osaka");
var num_obj = new Number(20);
var str_obj = new Object("Hello");

document.write("<p>");

print(obj);
print(ary);
print(num_obj);
print(str_obj);

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

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

p3-1

今回のサンプルでは明示的にtoStringメソッドを呼び出していますが、toStringメソッドを呼び出さず単にオブジェクトを記述しただけでも自動的に呼び出されるため結果は同じになります。

JavaScript入門の他の記事を見てみる

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)