小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

JavaScriptでの文字列は、オブジェクトか?

JavaScriptでの文字列は、基本型で、参照でなく値として処理します。
しかし、文字列は、Stringオブジェクト同じようにプロパティやメソッドが使用できます。
では、文字列は、オブジェクトなのでしょうか・・・。


文字列をtypeofをするとちゃんと string で objectでないのです。
あたかもStringオブジェクトに見えるのは、JavaScriptがオブジェクトコンテキストのとき、文字列をStringオブジェクトにラッピングするのです。
このようなオブジェクトをラッパーオブジェクトといいます。
したがって、JavaScriptでの文字列は、オブジェクト(object)でなく、あくまでも文字列(string)なのです。

    var aaa = "0123456789";
    alert("0123456789".length); // 10表示(あたかもStringオブジェクトになる)
    alert("0123456789".substr(5, 5)); // 56789を表示
    alert(typeof("0123456789"));// string と表示される

    alert(aaa.length);          // 10表示 と表示される
    alert(aaa.substr(5, 5));    // 56789を表示
    alert(typeof(aaa));         // 同じくstring と表示される

    aaa = new String("0123456789");
    alert(aaa.length);          // 10表示 と表示される
    alert(aaa.substr(5, 5));    // 56789を表示
    alert(typeof(aaa));         // object と表示される