ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript におけるプリミティブ オブジェクトのカプセル化の概要_javascript スキル

JavaScript におけるプリミティブ オブジェクトのカプセル化の概要_javascript スキル

WBOY
WBOYオリジナル
2016-05-16 16:23:001167ブラウズ

JavaScript では、文字列、数値、およびブール値はすべてプリミティブ型です。つまり、文字列、数値、およびブール値はオブジェクトの形式では存在しません。ただし、これら 3 つのプリミティブなタイプの値を操作する必要があるため、JavaScript はこれら 3 つのタイプの値を自動的にカプセル化し、プロパティとメソッドを備えたオブジェクトとして作成します。文字列を例にとると、このカプセル化プロセスは次のとおりです:

1. JavaScript は、文字列値の属性アクセスまたはメソッド呼び出しを検出すると、新しい String (文字列値) を呼び出して、文字列を String オブジェクトに自動的にカプセル化します。
2. JavaScript は、この新しく作成されたオブジェクトのプロパティまたはメソッドにアクセスし、対応する結果を返します。
3. 属性へのアクセスまたはメソッド呼び出しが完了すると、JavaScript は新しく作成されたオブジェクトをただちに破棄します。

次のコードを例にとると、JavaScript によって自動的に作成された String オブジェクトにプロパティを書き込むことは意味がありません。作成されたオブジェクトは、書き込みステートメントが終了すると存在しなくなるためです。


コードをコピー コードは次のとおりです:
var s = "テスト";
s.length = 9;
console.log(s.length);//まだ 4
s.newVariable = 9;
console.log(s.newVariable);//未定義
console.log(s === "テスト");//true

上記のコードの s 変数は常にプリミティブ文字列を表すことに注意してください。JavaScript によって自動的に作成される文字列オブジェクトは、s.length または s.newVariable オペレーションの実行中に存在します。これは、上記の実験のコードの最後の行から確認できます。

開発者は、プリミティブ値を自動的にカプセル化することに加えて、対応するプロセスを手動で実行することも選択できます。自動カプセル化とは異なり、手動カプセル化によって取得されたオブジェクトはすぐには破棄されないため、手動カプセル化されたオブジェクトに対して実行されるプロパティ書き込み操作は意味があります。


コードをコピー コードは次のとおりです:
var t = new String("test");
t.length = 9;
console.log(t.length);//length 属性は読み取り専用なので 4 のままです
t.newVariable = 9;
console.log(t.newVariable);//9
console.log(t == "テスト");//true

console.log(t === "テスト");//false

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。