.prototype.toString()
オブジェクトを表す文字列を返します。
文法
obj.toString()
各オブジェクトはtoString()
メソッドを持ちます。
このメソッドはオブジェクトがテキスト値として表される際に、
または文字列であることを期待される用途でオブジェクトが参照される際に、
自動的に呼び出されます。
デフォルトでは、各オブジェクトがObject
からの子孫であるため、
toString()
メソッドが継承されます。
カスタムオブジェクトにおいて、toString()が上書きされておらず、型がオブジェクト型であれば、
このメソッドは"[object type]"
を返します。
下記のコードはこれを説明するものです。
var o = new Object();
o.toString(); // returns [object Object]
JavaScript 1.8.5から、toString()はECMAScriptの第5版と正誤表に定義されているものとして、
null上で呼び出されると[object Null]
を、
undefined上で呼び出されると[object Undefined]
を返すようになりました。
後述する「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()メソッドが呼び出されると、 オブジェクトから継承されたデフォルト値が返されます。
theDog.toString(); //returns [object Object]
下記のコードはdogToString()
を作成して、toString()メソッドに割り当てることで、
デフォルトのtoString()メソッド上書きしています。
この関数はオブジェクト内の"property = value"の形式である、
name、breed、color、sexを含む文字列を生成して返します。
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()を、
そのオブジェクト上で呼び出す必要があり、調べたいオブジェクトをthis
値となる第1引数として渡します。
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]
仕様
ブラウザ互換性
機能 | Chrome | Firefox (Gecko) |
IE | Opera | Safari |
---|---|---|---|---|---|
基本 | ◯ | ◯ | ◯ | ◯ | ◯ |
機能 | Android | Chrome for Android |
Firefox Mobile |
IE Mobile |
Opera Mobile |
Safari Mobile |
---|---|---|---|---|---|---|
基本 | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ |
関連項目
© 2017 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
このページは、ページトップのURL先のMozilla Developer Network(以下、MDN)のコンテンツを翻訳した内容を基に構成されています。 構成について異なる点も含まれますので、下記の項目を確認し、必要に応じて元のコンテンツをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。
- 特定のブラウザに特化しすぎている情報やあまりにも古い情報、 または試験的に導入されているようなAPIや機能については、省略していることがあります。
- 例やデモについて、実際にページ内で動作させる関係で一部ソースコードを変更している場合や、 その例で使用しているコンテンツの単語や文章などを日本人向けに変更しいてる場合があります。
- MDNの更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
- "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。