.prototype.valueOf()
指定されたオブジェクトのプリミティブ値が返されます。
文法
object.valueOf()
説明
JavaScriptはオブジェクトをプリミティブ値に変換するために、valueOfメソッドを呼び出します。 あなたがvalueOfメソッド自体の実行を必要とするケースは稀で、 JavaScriptがプリミティブ値を必要とするようなオブジェクトに遭遇した際に、自動的に実行します。
デフォルトでは、valueOfメソッドはObjectからの子孫であるとして、各オブジェクトに継承されます。 JavaScriptのコアとなるような各組み込みオブジェクトは、このメソッドを上書きし、ふさわしい値を返します。 もしオブジェクトがプリミティブ値を持たない場合、valueOfはオブジェクト自身を返し、 これは次のように表示されます。
[object Object]
コード内でvalueOfを使用して、組み込みオブジェクトをプリミティブ値に変換することが可能です。
カスタムオブジェクトを作成する際は、デフォルトのObjectのメソッドの代わりに、
Object.prototype.valueOf()
をカスタムメソッドで上書きすることが可能です。
カスタムオブジェクトによるvalueOfの上書き
デフォルトのvalueOfメソッドの代わりに呼び出される関数を作成することが可能です。 この関数は引数を受け取ってはいけません。
myNumberType
型のオリジナルのオブジェクトを持ち、
それに対してvalueOfメソッドを作成することを想定します。
下記のコードはユーザー定義関数を、オブジェクトのvalueOfメソッドに割り当てています。
myNumberType.prototype.valueOf = function () { return customPrimitiveValue; };
前もってこのコードが読み込まれていれば、
myNumberType
型のオブジェクトがプリミティブ値として表現されるような使用が行われた際に、
JavaScriptは自動的にこのコードで定義された関数を呼び出します。
オブジェクトのvalueOfメソッドは、通常はJavaScriptによって実行されますが、 下記のようにして自身で実行することも可能です。
myNumber.valueOf()
注意: 文字列コンテキストのオブジェクトは、
valueOfを使用した文字列プリミティブへ変換するStringオブジェクトとは異なり、
toString()メソッドを通じて変換を行います。
"[object type ]"
である場合にのみ、全てのオブジェクトは文字列変換を持ちますが、
多くのオブジェクトは数値、真偽値、関数への変換を行いません。
例
valueOfの使用例
o = new Object();
myVar = o.valueOf(); // [object Object]
仕様
ブラウザ互換性
機能 | 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の更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
- "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。