Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年7月以降、すべてのブラウザーで利用可能です。
valueOf() は Object インスタンスのメソッドで、 this 値をオブジェクトに変換します。このメソッドは、派生オブジェクトでは独自の型変換ロジックのためにオーバーライドされるためのものです。
なし。
指定されたオブジェクトのプリミティブ値を返します。
メモ: 型変換の際に valueOf が有益であるためには、プリミティブを返す必要があります。すべてのプリミティブ型は自分自身で valueOf() メソッドを持っているので、一般的に primitiveValue.valueOf() を呼び出しても Object.prototype.valueOf() は呼び出されません。
JavaScript は valueOf メソッドを、オブジェクトをプリミティブな値に変換するときに呼び出します。あなたが自分で valueOf メソッドを実行する必要はほとんどなく、プリミティブな値が期待される場面にオブジェクトが出くわしたとき JavaScript が自動的に実行します。
このメソッドは数値変換とプリミティブ変換で優先的に呼び出されますが、文字列変換では toString() が優先的に呼び出され、 toString() は文字列値を返す可能性がとても高いので(Object.prototype.toString() の基本実装でも)、この場合 valueOf() は通常呼び出されません。
Object.prototype 継承するすべてのオブジェクト(つまり、 null プロトタイプオブジェクトを除くすべてのオブジェクト)は toString() メソッドを継承しています。 Object.prototype.valueOf() の基本実装は、意図的に有益なものになっていません。オブジェクトを返すことで、その返値はどのようなプリミティブ変換アルゴリズムでも使用することはありません。多くの組み込みオブジェクトは、適切なプリミティブ値を返すためにこのメソッドを上書きします。独自オブジェクトを作成する場合は、 valueOf() を上書きして独自メソッドを呼び出すことで、独自オブジェクトをプリミティブ値に変換することができます。一般的に、 valueOf() はオブジェクトにとって最も意味のある値を返すために使用します。 toString() とは異なり、文字列である必要はありません。また、[Symbol.toPrimitive]() メソッドを追加することもできます。このメソッドでは、変換処理をさらに制御することができ、型変換の際には常に valueOf や toString よりも優先されます。
基本の valueOf() メソッドは、 this の値自身を返しますが、まだオブジェクトに変換されていない場合はオブジェクトに変換されます。そのため、その返り値はどのようなプリミティブ変換アルゴリズムでも使用されることはありません。
既定の valueOf メソッドの代わりに呼び出される関数を作成することができます。型変換中に呼び出されるときには引数を渡されないので、関数は引数として取るべきではありません。
例えば、独自クラス Box に valueOf メソッドを追加するには次のようにします。
先のコードにおいて、 Box 型のオブジェクトがプリミティブ値(特に文字列ではない)として表現されるコンテキストで使用されるとき、 JavaScript で自動的に先のコードで定義されている関数が呼び出されます。
オブジェクトの valueOf メソッドは通常 JavaScript によって呼び出されますが、従うこと以下で自分で呼び出すこともできます。
単項プラスは、オペランドに対して数値変換を行います。これは、 [Symbol.toPrimitive]() を持たないほとんどのオブジェクトでは、 valueOf() を呼び出すことを意味しています。しかし、オブジェクトに独自の valueOf() メソッドがない場合、基本実装では valueOf() は無視され、代わりに toString() の返値が使用されます。
| ECMAScript® 2027 Language Specification # sec-object.prototype.valueof |
ブラウザー互換性一覧表を表示するには、JavaScript を有効にしてください。
より良いインターネットのための青写真。
このコンテンツの一部は、©1998–2026 個人の mozilla.org 協力者です。コンテンツはクリエイティブ・コモンズ・ライセンスのもとで利用できます。