Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at https://viewsourceconf.org

Object.prototype.toString()

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

構文

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 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]

// 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 2017 Draft (ECMA-262)
Object.prototype.toString の定義
ドラフト  

ブラウザ互換性

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート (有) (有) (有) (有) (有)
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート (有) (有) (有) (有) (有) (有)

関連項目

 

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

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