以下のコードを見てみよう。
一見するとsはオブジェクトぽく見えるが、typeofすると
sは文字列なのが分かる。
var s = "This is a pen"; var last_word = s.substring(s.lastIndexOf(" ")+1, s.length); console.log(last_word); // pen console.log(typeof(s)); // string
数値、文字列、論理値の3つの基本データ型は、それぞれに対応したオブジェクトクラスが用意されている。
つまり、基本データ型とを包み込むラッパーとして
Number String Booleanといったクラスが用意されているのである。
指定された文字列のプロパティやメソッドにアクセスすると、
JavaScriptがその文字列に対応したStringラッパーオブジェクトを内部的に生成する。
一旦アクセスされたオブジェクトは、システムによって回収される。
以下を見てみよう。
// 続き console.log(s.length); // 13 console.log(typeof(s)); // string
sがオブジェクトとして扱わるのは一時的なもので、
アクセスが終了すると型は文字列に戻る。
このような動作をするのは、JavaScriptが型を持たない言語であり、ある値の型を自由に変換出来るから。
オブジェクトをプログラムで明示的に使いたいばあいは、newする必要がある。
すみません、参考にしたのは第5版です