ラッパーオブジェクト

(文と宣言)
https://www.javadrive.jp/javascript/ini/index7.html

JavaScript のデータ型の中でプリミティブ型に含まれる数値や文字列はオブジェクトではないが、それぞれ対応するラッパーオブジェクトが用意されており、あたかもオブジェクトのようにプロパティを参照したりメソッドを実行したりすることができる。作られたラッパーオブジェクトはオブジェクトへのアクセスが終わると破棄されて元のプリミティブ値に戻る。
JavaScript のデータ型は大きくわけてプリミティブ型とオブジェクト型に分けることができ、プリミティブ型には次の 7 種類がある。

プリミティブ型

数値、長整数、文字列、論理値、undefined、null、シンボル
(=typeofの評価でObjectを返さないもの)

この中の undefined と null を除いたものに対しては、それぞれラッパーオブジェクトが用意されている。

  • 数値:Number
  • 長整数:BigInt
  • 文字列:String
  • 論理値:Boolean
  • シンボル:Symbol

オブジェクトではないプリミティブ型の数値や文字列にはメソッドなどは用意されていないが、プリミティブ型の値に対して対応するラッパーオブジェクトで用意されているメソッドを呼び出すと、自動的にプリミティブ型の値が対応するラッパーオブジェクトに変換され、その上でラッパーオブジェクトのメソッドが呼び出される。

以下の例では、プリミティブ型のひとつである数値に対して、対応するラッパーオブジェクトの Number オブジェクトのメソッドを呼び出している。

let num = 17;

console.log(num.toString(2));
>> 10001

これは以下のようにプリミティブ型の値からラッパーオブジェクトのオブジェクトを作成してメソッドを呼び出しているのと同じである。

let num = 17;
let obj = new Number(num);

console.log(obj.toString(2));
>> 10001

このようにラッパーオブジェクトが用意されているおかげで、プリミティブ型であってもあたかもオブジェクトのように扱うことができる。ラッパーオブジェクトへの変換は自動で行われるので、特に明確な理由がなければラッパーオブジェクトのオブジェクトを作成するのではなく、プリミティブ型のリテラルに対して直接メソッドを呼び出したりプロパティを参照するようにする。

inserted by FC2 system