概要
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