基本的な型値の操作を容易にするために、ECMAScript は 3 つの特別な参照型 (Boolean、Number、String) も提供します。これらの型は、この章で紹介する他の参照型と似ていますが、それぞれの基本型に対応する特別な動作もあります。実際、基本型の値が読み取られるたびに、対応する基本ラッパー型のオブジェクトがバックグラウンドで作成され、いくつかのメソッドを呼び出してこのデータを操作できるようになります。以下の例:
var s1="テキスト";
var s2=s1.substring(2);
この例の変数 s1 には文字列が含まれており、この文字列はもちろん基本型の値であり、コードの次の行では s1 の substring() メソッドを呼び出し、返された結果を s2 に保存します。プリミティブ型の値はオブジェクトではないことがわかっているので、論理的にはメソッドを持つべきではありません (ただし、私たちが望むように、メソッドを持つ必要があります)。実はこの直感的な操作を実現するために、一連の処理がバックグラウンドで自動的に行われています。コードの 2 行目が s1 にアクセスするとき、アクセス プロセスは読み取りモードになります。つまり、この文字列の値がメモリから読み取られます。読み取りモードで文字列にアクセスすると、以下の処理がバックグラウンドで自動的に完了します。
1. String 型のインスタンスを作成します。
2. インスタンスで指定されたメソッドを呼び出します。
3. このインスタンスを破棄します。
上記の 3 つの手順は、次の ECMAScript コードを実行するものと考えることができます。
var s2=s1.substring(2);
s1=null;
この処理の後、基本的な文字列値はオブジェクトと同じになり、上記の 3 つの手順は、それぞれ Boolean 型と Number 型に対応する Boolean 値と数値にも適用されます。
参照型と基本パッケージ化型の主な違いは、オブジェクトの有効期間です。 new 演算子を使用して作成された参照型のインスタンスは、実行フローが現在のスコープを離れるまでメモリ内に残ります。自動的に作成される基本的なパッケージング タイプのオブジェクトは、コード行が実行される時点でのみ存在し、その後すぐに破棄されます。これは、実行時にプリミティブ型の値にプロパティやメソッドを追加できなくなったことを意味します。以下に例を示します:
コードをコピーします
alert(s1.color);//未定義
ここで、コードの 2 行目は文字列 s1 に color 属性を追加しようとしています。ただし、ここでコードの 3 行目が s1 にアクセスすると、その color プロパティが欠落しています。この問題の原因は、コードの 3 行目が実行されるときに、2 行目で作成された String オブジェクトが破棄されていることです。コードの 3 行目では、color 属性を持たない独自の String オブジェクトを作成します。
もちろん、Boolean、Number、String を明示的に呼び出して、基本的なパッケージ化タイプのオブジェクトを作成することもできます。ただし、基本ラッパー型を扱っているのか、基本ラッパー型の値を参照しているのかを見失いやすいため、これは絶対に必要な場合にのみ実行してください。基本ラッパー型のインスタンスに対して typeof を呼び出すと、「object」が返され、基本ラッパー型のすべてのオブジェクトがブール値 true に変換されます。
Object コンストラクターも、ファクトリ メソッドと同様に、渡された値の型に基づいて、対応する基本ラッパー型のインスタンスを返します。例:
コードをコピーします
コードは次のとおりです:
var obj=new Object("テキスト");
alert(obj instanceof String);//true
文字列を Object コンストラクターに渡すと String のインスタンスが作成され、数値パラメータを渡すと Number のインスタンスが取得され、Boolean パラメータを渡すと Boolean のインスタンスが取得されます。
new を使用して基本パッケージ化タイプのコンストラクターを呼び出すことは、同じ名前の変換関数を直接呼び出すこととは異なることに注意してください。例:
コードをコピーします
コードは次のとおりです:
var value="25";
var number=Number(value) //変換関数
;
alert(数値の種類); //"数値"
var obj=new Number(value) //コンストラクター
;
alert(obj の種類) //「オブジェクト」
Dalam contoh ini, nombor pembolehubah menyimpan nilai jenis asas 25, dan pembolehubah obj menyimpan tika Nombor.
Walaupun kami tidak mengesyorkan mencipta objek jenis pembungkus asas secara eksplisit, keupayaan mereka untuk memanipulasi nilai jenis asas masih agak penting. Setiap jenis pembalut asas menyediakan kaedah yang mudah untuk memanipulasi nilai yang sepadan.
Itu sahaja kandungan artikel ini, saya harap anda semua menyukainya.