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 データ型の自動変換」に基づいて基本データ型に変換される。
- コンテキストが曖昧な場合(+演算子や比較演算子等)、通常、オブジェクトは次のような順序で基本データ型に変換される。
- オブジェクトのvalueOf()メソッド(ほとんどの場合、Objectクラスから継承している)が呼び出される。
- valueOf()メソッドが基本データ型の値を返した場合は、その値が使われる。valueOf()メソッドが基本データ型の値を返さなかった場合は、toString()メソッドによって変換された文字列が使われる。
- 例外として、DateオブジェクトはtoString()メソッドとvalueOf()メソッドを持ち、+演算子では文字列、比較演算子では数値を返す。
数値とも文字列とも受け取れるような文脈で、オブジェクトがどの基本データ型に変換されるかは、valueOf()メソッドの返すデータ型が重要ということになりますね。
トラックバック (0)
この記事へのトラックバックはまだありません。
コメント (0)
この記事へのコメントはまだありません。