【JavaScript】ラッパーオブジェクト - プリミティブ(リテラル)のラッパー

【JavaScript】ラッパーオブジェクト - プリミティブ(リテラル)のラッパー

JavaScriptのプリミティブ(リテラル)のラッパーオブジェクトについて解説します。

検証環境

ラッパーオブジェクト

ラッパーオブジェクトの広義の意味は“値とメソッドを持つオブジェクト”です。

一般的には数値や文字列などの単純な値(プリミティブまたはリテラルな値と呼ぶ)とメソッドを持つオブジェクトのことを指します。

プリミティブな値は標準でラッパーオブジェクトが用意されています。

プリミティブ型のラッパーオブジェクト

プリミティブ型の代表的なラッパーオブジェクトは次の3つです。

プリミティブ型 ラッパーオブジェクト
数値 number Number
文字列 string String
論理値 boolean Boolean

これらのラッパーオブジェクトは様々なメソッドを備えています。

Number

Numberオブジェクトは数値(number)のラッパーオブジェクトです。

___ih_hl_start
let num = new Number(10);
___ih_hl_end

// 型の確認
console.log(typeof(num));

// 算術演算
let sum = num + 8;
console.log(sum);

// 文字列変換
let num_str = num.toString();
console.log(num_str, typeof(num_str));
object
18
10 string

Numberオブジェクトはobject型ですが、数値型と同様に算術演算で扱えます。

また、メソッドが用意されており、例えばtoStringメソッドは数値を文字列に変換した値を取得できます。

String

Stringオブジェクトは文字列(string)のラッパーオブジェクトです。

___ih_hl_start
let str = new String("Hello World");
___ih_hl_end

// 型の確認
console.log(typeof(str));

// 文字列結合
let message = "Hey! " + str;
console.log(message);

// 文字の取得
let c = str.charAt(0);
console.log(c, typeof(c));
object
Hey! Hello World
H string

Stringオブジェクトはobject型ですが、文字列型と同様に文字列結合で扱えます。

また、メソッドが用意されており、例えばcharAtメソッドは実引数で与えた数値番目の文字を取得できます。

Boolean

Booleanオブジェクトは論理型(boolean)のラッパーオブジェクトです。

___ih_hl_start
let bool = new Boolean(true);
___ih_hl_end

// 型の確認
console.log(typeof(bool));

// 条件式
if( bool ) {
    console.log("EXECUTE.");
}

// 論理演算
let b = bool && false;
console.log(b, typeof(b));

// 文字列変換
let bool_str = bool.toString();
console.log(bool_str, typeof(bool_str));
object
EXECUTE.
false 'boolean'
true string

Booleanオブジェクトはobject型ですが、論理型(boolean)と同様に条件式や論理演算などで扱えます。

また、メソッドが用意されており、例えばtoStringメソッドは論理値を文字列に変換した値を取得できます。

自動変換

プリミティブ型の値に対してラッパーオブジェクトのメソッドを呼び出すと、必要に応じてラッパーオブジェクトに自動変換します。

ただし、プログラムで型が変わりませんのでご注意ください。

let num = 10;
console.log(typeof(num));

let num_str = num.toString();

console.log(typeof(num));
number
number