by shigemk2

当面は技術的なことしか書かない

ラッパーとは

以下のコードを見てみよう。
一見すると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版です