JavaScriptでのオブジェクトの文字列への変換
JavaScriptには、オブジェクトを文字列に変換するためのいくつかの方法があります。本記事では、object.toString()
、obj.toLocaleString()
、および非推奨のobject.toSource()
について、例を交えながら詳しく解説します。
object.toString()について
object.toString()
は、JavaScriptのすべてのオブジェクトに存在するメソッドであり、オブジェクトの文字列表現を返します。このメソッドは、オブジェクトの型情報を表すデフォルトの文字列を返しますが、オーバーライドすることで独自の文字列を返すことも可能です。
基本的な使い方
const obj = {};
console.log(obj.toString()); // "[object Object]"
デフォルトでは、オブジェクトは"[object Object]"
のように型情報を返します。
配列の例
const arr = [1, 2, 3];
console.log(arr.toString()); // "1,2,3"
配列の場合、要素をカンマで区切った文字列が返されます。
カスタムオブジェクトでのオーバーライド
const customObj = {
toString() {
return "これはカスタムオブジェクトです";
}
};
console.log(customObj.toString()); // "これはカスタムオブジェクトです"
数学的な例
例えば、行列を文字列として表現する場合:
const matrix = {
rows: [[1, 2], [3, 4]],
toString() {
return this.rows.map(row => row.join(" ")).join("\\n");
}
};
console.log(matrix.toString());
// "1 2\n3 4"
この例では、行列の行を整形して文字列として返しています。
obj.toLocaleString()について
obj.toLocaleString()
は、オブジェクトをロケールに応じた文字列表現に変換します。これは、主にDate
やNumber
などのオブジェクトで利用されることが多いメソッドです。
日付の例
const date = new Date("2025-01-19T00:00:00Z");
console.log(date.toLocaleString("ja-JP")); // "2025/1/19 9:00:00"
上記の例では、toLocaleString
を使用して日本のロケール形式で日付と時刻を出力しています。
配列の例
const arr = [1000, 2000, 3000];
console.log(arr.toLocaleString("en-US")); // "1,000,2,000,3,000"
console.log(arr.toLocaleString("ja-JP")); // "1,000、2,000、3,000"
配列の各要素にtoLocaleString
が適用され、ロケールに応じた形式で結合されます。
object.toSource()について(非推奨)
object.toSource()
は、オブジェクトをソースコード文字列として表現するメソッドです。ただし、非標準であり、現在はほとんどの環境で使用できません。
基本例(Firefoxのみで動作)
const obj = { a: 1, b: 2 };
console.log(obj.toSource());
// "({a: 1, b: 2})"
このメソッドは、主にデバッグ目的で使用されましたが、互換性の低さから推奨されていません。
代替手段
JSON.stringify
を使用することで、オブジェクトを文字列としてシリアライズすることができます。
const obj = { a: 1, b: 2 };
console.log(JSON.stringify(obj)); // '{"a":1,"b":2}'
非推奨であるtoSource
の代わりに、標準的な方法を使用することをお勧めします。
まとめ
JavaScriptでは、オブジェクトを文字列に変換するためのさまざまな方法があります。それぞれのメソッドには用途があり、toString
は汎用的、toLocaleString
はロケール対応、toSource
は非推奨です。目的に応じて適切な方法を選びましょう。