JavaScript 第5版 - 3章 データ型と値(6)

JavaScript 第5版の「3章 データ型と値」の「3.13 基本データ型のラッパーオブジェクト」~「3.14 オブジェクトから基本データ型への変換」(39~42ページ)を読み進めていきます。

3.13 基本データ型のラッパーオブジェクト

  • 基本データ型の数値、文字列、論理値には、それぞれNumber、String、Booleanというラッパークラスがある。
  • 基本データ型は、必要に応じて一時的なラッパーオブジェクトが生成され、アクセスが終了すると廃棄される。
  • new演算子で明示的に生成したNumber、String、Booleanオブジェクトは、必要に応じて数値、文字列、論理値に変換される。
  • eval()メソッドの引数には必ず文字列を渡す。Stringオブジェクトを引数に使うと、文字列を引数にした場合とは動作が異なる。
var s = 'string';
var len =  s.length;

このsはオブジェクトではなく基本データ型ですが、lengthプロパティにアクセスするために、一時的にStringオブジェクトが生成されるということになります。

3.14 オブジェクト型から基本データへの変換

  • 論理値コンテキストでは、nullでないオブジェクトは必ずtrueに変換される。
  • コンテキストが明確な場合、オブジェクトは39ページの「表3-3 データ型の自動変換」に基づいて基本データ型に変換される。
  • コンテキストが曖昧な場合(+演算子や比較演算子等)、通常、オブジェクトは次のような順序で基本データ型に変換される。
    1. オブジェクトのvalueOf()メソッド(ほとんどの場合、Objectクラスから継承している)が呼び出される。
    2. valueOf()メソッドが基本データ型の値を返した場合は、その値が使われる。valueOf()メソッドが基本データ型の値を返さなかった場合は、toString()メソッドによって変換された文字列が使われる。
  • 例外として、DateオブジェクトはtoString()メソッドとvalueOf()メソッドを持ち、+演算子では文字列、比較演算子では数値を返す。

数値とも文字列とも受け取れるような文脈で、オブジェクトがどの基本データ型に変換されるかは、valueOf()メソッドの返すデータ型が重要ということになりますね。

コメント (0)

この記事へのコメントはまだありません。

コメントフォーム

トラックバック (0)

この記事へのトラックバックはまだありません。

この記事のトラックバックURI
http://dxd8.com/archives/49/trackback/
この記事のURI
http://dxd8.com/archives/49/