1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【JavaScript】ラッパーオブジェクト

Posted at

概要

JavaScriptを学習、理解を深めるため「JavaScript Primer 迷わないための入門書」を読み、
理解した内容等を記載していく。

【JavaScript】JavaScript入門一覧」に他の記事をまとめています。

この記事で理解できること

  • ラッパーオブジェクトとは
  • ラッパーオブジェクトの挙動

ラッパーオブジェクト

  • nullundefinedを除くプリミティブ型のデータには、対となるラッパーオブジェクトが存在する。
  • 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
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?