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

構文

obj.toString()

返り値

オブジェクトを表す文字列。

説明

全てのオブジェクトは toString メソッドを持ち、オブジェクトが文字列値として表されるべきときや、文字列が期待される構文で参照されたときに自動的に呼び出されます。デフォルトで、toString メソッドは Object の子孫にあたるあらゆるオブジェクトに継承されています。このメソッドがカスタムオブジェクト中で上書きされていない場合、toString は "[object type]" という文字列を返します(type は そのオブジェクトの型)。以下のコードがこれを例示しています。

var o = new Object();
o.toString(); // [object Object] を返す

注記: JavaScript 1.8.5から、toString( ) は null で呼び出された場合に [object Null] を、undefined で呼び出された場合に [object Undefined] を返します。これはECMAScript 5th Editionとその後のエラッタによって定義されました。オブジェクトクラスの検出に toString( ) を使うを参照してください。

デフォルトの toString メソッドの上書き

あなたはデフォルトの toString メソッドに代わって呼び出される関数を作ることができます。toString メソッドは引数を取らず、文字列を返す必要があります。あなたが作った toString メソッドは好きな文字列を返せますが、オブジェクトに関する情報を伝えるのが一番役に立つでしょう。

以下のコードは Dog オブジェクト型を定義し、Dog 型のオブジェクト theDog を生成しています。

function Dog(name, breed, color, sex) {
  this.name = name;
  this.breed = breed;
  this.color = color;
  this.sex = sex;
}

theDog = new Dog('Gabby', 'Lab', 'chocolate', 'female');

もしこのカスタムオブジェクト上で toString メソッドを呼び出した場合、メソッドは Object から継承されたデフォルト値を返します。

theDog.toString(); // [object Object] を返す

以下のコードはデフォルトの toString メソッドを上書きするのに使う関数 dogToString を生成し、toString メソッドに代入しています。この関数はオブジェクトの名前、品種、毛色、そして性別を "property = value;" の書式で含む文字列を生み出します。

Dog.prototype.toString = function dogToString() {
  var ret = 'Dog ' + this.name + ' is a ' + this.sex + ' ' + this.color + ' ' + this.breed;
  return ret;
}

以上のコードにより、theDog が文字列の文脈で使われた時にはいつでも、JavaScript は以下の文字列を返す dogToString 関数を自動的に呼び出します。

"Dog Gabby is a female chocolate Lab"

オブジェクトクラスの検出に toString() を使う

toString( ) はすべてのオブジェクトに対し、そのクラスを得るために使用することができます。すべてのオブジェクトで Object.prototype.toString ) を使うためには、Function.prototype.call() または Function.prototype.apply() を、第1引数 thisArg に調べたいオブジェクトを渡して呼び出す必要があります。

var toString = Object.prototype.toString;

toString.call(new Date);    // [object Date]
toString.call(new String);  // [object String]
toString.call(Math);        // [object Math]

// Since JavaScript 1.8.5
toString.call(undefined);   // [object Undefined]
toString.call(null);        // [object Null]

仕様

仕様 状態 コメント
ECMAScript 1st Edition (ECMA-262) 標準 初めての定義。 JavaScript 1.0 で実装された。
ECMAScript 5.1 (ECMA-262)
Object.prototype.toString の定義
標準 null で呼び出された場合は [object Null] を、 undefined  で呼び出された場合は [object Undefined] を返す。
ECMAScript 2015 (6th Edition, ECMA-262)
Object.prototype.toString の定義
標準  
ECMAScript Latest Draft (ECMA-262)
Object.prototype.toString の定義
ドラフト  

ブラウザ互換性

機能ChromeEdgeFirefoxInternet ExplorerOperaSafari
基本対応 あり あり1 あり あり あり
機能Android webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
基本対応 あり あり あり4 あり あり あり

関連項目

ドキュメントのタグと貢献者

このページの貢献者: woodmix, sii, lv7777, teoli, ethertank, Mgjbot, Potappo, Yuichirou
最終更新者: woodmix,