JavaScript | ラッパーオブジェクトとプリミティブ型

javascrpit JavaScript
スポンサーリンク

主な内容の要点

1. プリミティブ型とオブジェクト型の区別

  • JavaScript のデータ型は大きく「プリミティブ型(原始型)」と「オブジェクト型」に分けられる。
  • プリミティブ型には以下の 7 種類がある:
    数値(Number)
    長整数(BigInt)
    文字列(String)
    論理値(Boolean)
    undefined
    null
    シンボル(Symbol)
  • このうち、undefinednull に対してはラッパーオブジェクトが提供されない。
プリミティブ型ラッパーオブジェクト
数値Number
長整数BigInt
文字列String
論理値Boolean
シンボルSymbol

2. ラッパーオブジェクトとは何か

  • プリミティブ型の値(例:数値や文字列)には通常プロパティやメソッドはないが、JavaScript は内部的に「対応するラッパーオブジェクト」を一時的に生成して、メソッド呼び出しを可能にしている。
  • 例えば:
let num = 17;
console.log(num.toString(2));  // “10001”
JavaScript
  • この toString(2) 呼び出し時に、num は暗黙的に new Number(num) のようなラッパーオブジェクトに変換され、そのメソッドが呼ばれる。

3. ラッパーオブジェクトを明示的に生成することの注意点

  • new Number(…)new String(…)new Boolean(…) のようにラッパーオブジェクトを明示的に生成できるが、これはプリミティブ型とは別のオブジェクト型になる。
let num = 10;
console.log(typeof num);         // “number”
let numObj = new Number(num);
console.log(typeof numObj);      // “object”
console.log(num === numObj);     // false
JavaScript

このように、プリミティブの値とラッパーオブジェクトは型も等価比較も異なる。

また、Number(値) のように new を使わず呼び出すと、プリミティブ値が返る(オブジェクトではない)という違いもある。

タイトルとURLをコピーしました