概要
指定されたオブジェクトのプリミティブな値を返します。
構文
object.valueOf()
引数
無し
説明
JavaScript は valueOf
メソッドを、オブジェクトをプリミティブな値に変換するときに呼び出します。あなたが自分で valueOf
メソッドを実行する必要はほとんどなく、プリミティブな値が期待される場面にオブジェクトが出くわしたとき JavaScript が自動的に実行します。
デフォルトで、valueOf
メソッドは Object
の子孫にあたるあらゆるオブジェクトに継承されています。全ての組み込みコアオブジェクトは適切な値を返すためにこのメソッドを上書きしています。もしオブジェクトがプリミティブな値を持たない場合、valueOf
はオブジェクト自身を返します。それは以下のように表示されます。
[object Object]
あなたは自分のコードで組み込みオブジェクトをプリミティブな値にするために valueOf
を使うことができます。またカスタムオブジェクトを生成した時は、あなたは Object.valueOf
を上書きしてデフォルトの Object
のメソッドの代わりにカスタムメソッドを呼び出すようにすることができます。
カスタムオブジェクトの valueOf
の上書き
あなたはデフォルトの valueOf
メソッドに代わって呼び出される関数を作ることができます。関数は引数を取ってはなりません。
myNumberType
というオブジェクト型があって、それに valueOf
メソッドを作りたいとしましょう。以下のコードはユーザー定義関数をオブジェクトの valueOf
メソッドに代入しています。
myNumberType.prototype.valueOf = function () { return customPrimitiveValue; };
上のコードにより、myNumberType
型のオブジェクトがプリミティブな値で表されるべき文脈で使われた時にはいつでも、JavaScript は自動的に上のコードで定義された関数を呼び出します。
オブジェクトの valueOf
メソッドはたいてい JavaScript によって実行されますが、あなた自身も以下のように実行できます。
myNumber.valueOf()
注意
文字列型の文脈にあるオブジェクトは toString
メソッドを通じて変換されますが、これは String
オブジェクトが valueOf
を使って文字列型に変換されるのとは違います。すべての文字列オブジェクトは、たとえ "[object
type
]
" であるとしても、文字列への変換ができます。しかし多くのオブジェクトは数値や真偽値や関数には変換されません。