概要
JavaScriptを学習、理解を深めるため「JavaScript Primer 迷わないための入門書」を読み、
理解した内容等を記載していく。
「【JavaScript】JavaScript入門一覧」に他の記事をまとめています。
この記事で理解できること
- ラッパーオブジェクトとは
- ラッパーオブジェクトの挙動
ラッパーオブジェクト
-
null、undefinedを除くプリミティブ型のデータには、対となるラッパーオブジェクトが存在する。 - JavaScriptでは、プリミティブ型の値の
プロパティへアクセスする際、自動で対となるラッパーオブジェクトに変換されている。 - 結果的に、プリミティブ型のデータでも、各Objectが持つプロパティにアクセスができる。
| ラッパーオブジェクト | プリミティブ型 | 例 |
|---|---|---|
| Boolean | 真偽値 | true、false |
| Number | 数値 | 1、3.14 |
| String | 文字列 | "Hello" |
| Symbol | シンボル | Symbol("シンボル") |
// プリミティブ型のデータ(文字列)を宣言
const str = "string";
// あれ?ただの文字列なのにtoUpperCaseメソッドが使用できる。なぜ?
// => 対象のメソッドを持つStringラッパーオブジェクトに変換されているから
console.log(str.toUpperCase()); // => STRING
// 以下と同じこと
const str = new String("string");
console.log(str.toUpperCase()); // => STRING
プリミティブ型のデータはリテラルの使用が推奨される理由
主な理由として、以下が挙げられる。
- プリミティブ型のデータは、自動的に対となる
ラッパーオブジェクトに変換されるため。 -
new ラッパーオブジェクト(データ)のようにラッパーオブジェクトのインスタンスを扱う利点がないため。 - ラッパーオブジェクトを
typeof演算子で評価した結果が、プリミティブ型ではなく"object"となり混乱を生むため。
const str = "文字列";
console.log(typeof str); // => string
const str = new String("文字列");
console.log(typeof str); // => object