1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人的アウトプットカレンダーAdvent Calendar 2024

Day 7

【JavaScript】ラッパーオブジェクトについて

Last updated at Posted at 2024-12-06

HTML5 プロフェッショナルッショナル認定試験の勉強をしていた際に「ラッパーオブジェクト」というワードが出てきました。

ワード自体は耳にしたことがありましたが、
実際にどのようなものなのか説明できるほどの知識がありませんでした。

そこで今回はこのラッパーオブジェクトについて調べてみました。

ラッパーオブジェクトとは

まずは下記の例を見てください。

// プリミティブ型の文字列
const str = "hello";

// 文字列に対してメソッドを呼び出す
console.log(str.toUpperCase()); // HELLO

プリミティブ型の値である文字列であるにも関わらず、
String オブジェクトのインスタンスメソッドである toUpperCase() メソッドを呼び出すことができます。

JavaScriptでは、プリミティブ型に対してプロパティアクセスをすると、
自動的に対応するラッパーオブジェクトに変換されます。

実際には下記のように動作しています。

const temp = new String("hello"); // 一時的なラッパーオブジェクト
const result = temp.toUpperCase(); // ラッパーオブジェクトのメソッド使用
temp = null; // 一時オブジェクトは破棄

※追記

追記 (2024/12/08)

こちらに記載があるように、
BigInt()Symbol() コンストラクターは new を使用するとエラーが発生します。

これらのラッパーオブジェクトを作成するには、
下記のように Object() を使用するようです。

const symbolObj = Object(Symbol("hoge"));
console.log(typeof symbolObj); // "object"

BigIntSymbol 以外にも使用できるのでラッパーオブジェクトを作成する場合は、Object() を使用するほうが一貫性があります。


つまりラッパーオブジェクトとは、
プリミティブ型である値をオブジェクトとして扱えるようにするため、
自動的に生成されるオブジェクトのことのようです。

ラッパーオブジェクトの種類

ラッパーオブジェクトは、プリミティブ型のうち
undefinednull を除くすべてに用意されています。

プリミティブ型 ラッパーオブジェクト
数値 Number
長整数 BigInt
文字列 String
論理値 Boolean
シンボル Symbol

まとめ

ラッパーオブジェクトについて詳しく知ることができました。

プリミティブ型の値にメソッドやプロパティを提供する便利な仕組みです。
ただし、プリミティブ型とラッパーオブジェクトの共同の違いがバグの原因になる可能性があるため、new String()new Number() を使うのは一般的に推奨されていないようです。

きちんと理解し、正しく使っていきたいですね。

それでは。

参考文献

1
1
2

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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?