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] を返す
以下のコードでは、 dogToString を生成および割り当てし、既定の toString メソッドを上書きします。この関数はオブジェクトの名前、品種、毛色、性別を "property = value;" の書式で含む文字列を生成します。
Dog.prototype.toString = function dogToString() {
var ret = 'Dog ' + this.name + ' is a ' + this.sex + ' ' + this.color + ' ' + this.breed;
return ret;
}
または
Dog.prototype.toString = function dogToString() {
return `Dog ${this.name} is a ${this.sex} ${this.color} ${this.breed}`;
}
前者のコードの中で、 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 (ECMA-262) Object.prototype.toString の定義 |
現行の標準 | |
| ECMAScript 2015 (6th Edition, ECMA-262) Object.prototype.toString の定義 |
標準 | |
| ECMAScript 5.1 (ECMA-262) Object.prototype.toString の定義 |
標準 | null で呼び出された場合は [object Null] を、 undefined で呼び出された場合は [object Undefined] を返すようになった。 |
| ECMAScript 1st Edition (ECMA-262) | 標準 | 初回定義。 JavaScript 1.0 で実装された。 |
ブラウザーの互換性
| デスクトップ | モバイル | サーバー | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
toString() | Chrome 完全対応 1 | Edge 完全対応 12 | Firefox 完全対応 1 | IE 完全対応 3 | Opera 完全対応 3 | Safari 完全対応 1 | WebView Android 完全対応 1 | Chrome Android 完全対応 18 | Firefox Android 完全対応 4 | Opera Android 完全対応 10.1 | Safari iOS 完全対応 1 | Samsung Internet Android 完全対応 1.0 | nodejs 完全対応 あり |
凡例
- 完全対応
- 完全対応