Object.prototype.toString()

この翻訳は不完全です。英語から この記事を翻訳 してください。

概要

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

構文

obj.toString()

説明

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

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

組み込みの toString メソッド

コア JavaScript オブジェクトはそれぞれ、そのオブジェクトを文字列に変換する必要があるときに適切な値を返す独自の toString メソッドを持っています。それらには以下のようなものがあります。

後方互換性

JavaScript 1.2

JavaScript 1.2 では、デフォルトの 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

Using toString() to detect object class

toString() can be used with every object and allows you to get its class. To use the Object.prototype.toString() with every object, you need to call Function.prototype.call() or Function.prototype.apply() on it, passing the object you want to inspect as the first parameter called 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]

Specifications

Specification Status Comment
ECMAScript 1st Edition (ECMA-262) 標準 Initial definition. Implemented in JavaScript 1.0.
ECMAScript 5.1 (ECMA-262)
Object.prototype.toString の定義
標準 Call on null returns [object Null], and undefined returns [object Undefined]
ECMAScript 2015 (6th Edition, ECMA-262)
Object.prototype.toString の定義
標準  
ECMAScript 2017 Draft (ECMA-262)
Object.prototype.toString の定義
ドラフト  

Browser compatibility

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support (有) (有) (有) (有) (有)
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (有) (有) (有) (有) (有) (有)

関連項目

 

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

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