概要:このチュートリアルでは、Boolean、String、Numberを含むプリミティブラッパー型について学びます。
プリミティブラッパー型の概要
JavaScript は、Boolean、Number、Stringの3つのプリミティブラッパー型を提供します。
プリミティブラッパー型を使用すると、ブール値、数値、文字列などのプリミティブ値を簡単に使用できるようになります。
次の例を見てください。
let language = 'JavaScript';
let s = language.substring(4);
console.log(s); // Script
Code language: JavaScript (javascript)
この例では、変数language
はプリミティブ文字列値を保持しています。substring()
のようなメソッドは持っていません。ただし、上記のコードは完全に機能します。
数値、文字列、またはブール値を保持する変数でメソッドを呼び出すと、JavaScriptは舞台裏で次の手順を実行します。
- 対応する型のオブジェクトを作成します。
- インスタンスで特定のメソッドを呼び出します。
- インスタンスを即座に削除します。
したがって、次のコードは
let language = 'JavaScript';
let str = language.substring(4);
Code language: JavaScript (javascript)
技術的には次のコードと同等です。
let language = 'JavaScript';
// behind the scenes of the language.substring(4);
let tmp = new String(language);
str = temp.substring(4);
temp = null;
Code language: JavaScript (javascript)
プリミティブラッパー型と参照型
new
演算子を使用して参照型のオブジェクトを作成すると、そのオブジェクトはスコープから外れるまでメモリに保持されます。
次の変数s
は、スコープから外れるまでヒープに保持されます。
let s = new String('JavaScript');
console.log(s);
Code language: JavaScript (javascript)
ただし、自動的に作成されたプリミティブラッパーオブジェクトは、1行のコードに対してのみ存在します。次の例を見てください。
let s = 'JavaScript';
s.language = 'ECMAScript';
console.log(s.language); // undefined
Code language: JavaScript (javascript)
この例では、変数s
のlanguage
プロパティにアクセスしようとしましたが、'ECMAScript'
ではなくundefined
の値を受け取りました。
console.log(s.language); // undefined
Code language: JavaScript (javascript)
その理由は、次のコードがString
オブジェクトを作成し、language
プロパティに値を割り当てているからです。
s.language = 'ECMAScript';
Code language: JavaScript (javascript)
ただし、language
プロパティを持つStringオブジェクトは、このコード行の実行中にのみ存在します。
次のようにプリミティブラッパーオブジェクトを明示的に作成することは推奨されません。
let n = new Number(10);
let s = new String('JS');
let b = new Boolean(false);
Code language: JavaScript (javascript)
ただし、プリミティブ値をより効果的に操作するために、プリミティブ値で使用できるメソッドを知っておく必要があります。
このチュートリアルでは、ブール値、数値、文字列のJavaScriptプリミティブラッパー型について学びました。