新しくプロキシに追加ES6が、それはああ何をするのでしょうか?プロキシは、エージェントの意図、およびプロキシのES6は、プロキシオブジェクトは、プロキシオブジェクトを使用すると、役割プロキシプロキシオブジェクトを説明する非常に漠然とした感覚を、サウンドです。
プロキシの主な役割は、傍受したデータを読み、フィルタの保護を変更することができます対象となります。
私たちは、従来のデータ、内部名、年齢、性別の3つの属性、名前、需要を達成するためにES3の方法を最初に使用し、年齢プロパティは読み取りおよび書き込み可能で、専用のプロパティが、セックスを読んで、書き込み不可
分析手順:
我々は3つのプロパティを備え、内部のデータは、データを定義し、コンストラクタを定義することができます
我々はまた、二つの方法は、get、セットを暴露しました
データの書き込み時に決定するためにデータを書き込むために使用される、データを読み取るために使用されるセットを取得しますが、このプロパティのセックスを設定したい場合は、我々はエラーメッセージを与えます
VaRの人=機能(){ VARデータ= { 名: '猿'、 年齢:18、 性別: '男' } this.get =機能(キー){ はconsole.log(キー) リターンデータ[キー] } これ。セット=機能(キー、値){ 場合(キー== 'セックス'!){ [キー] =値戻りデータ }他{ '该属性为只读属性'投げる } } } VARの人=新しい人を。 VAR名= person.get( '名前') person.set( 'セックス'、 '女') はconsole.log(person.get( 'セックス'))
最終的な出力:
私たちは、性別、名前が読み書き可能で、実現が、変更することはできません
その後、我々はのDefinePropertyずっと簡単に達成するために達成するためにES5の方法を使用し、ES5この方法を知っていますよ
VAR人= { 名: '猿'、 年齢:30 } Object.defineProperty(人'セックス'、{ 書き込み可能:偽、 値: '男' }) person.sex = '女' はconsole.log(person.sex )
私たちは、セックスの属性がのDefinePropertyプロパティによって書き込み可能ではない設定しました
私たちは、最終的な結果は、変更または男性成功しないことがわかります
その後、我々は達成するために、プロキシES6を再利用します
VaRの人= { 名: '猿'、 年齢:19、 性別: '男' } VAR P1 =新しいプロキシ(人、{ 取得(ターゲット、キー){ はconsole.log(ターゲット) はconsole.log(キー) リターン・ターゲット[キー] }、 設定(目標、キー、値){ (キー== '性別')であれば{ スロー'不允许修改性別' }他{ 標的[キー] =値 } } }) p1.nameの p1.sex = '女'
私たちは、上記のコードを分析する必要があり、
それは人のデータを定義します
新しいプロキシP1によってプロキシ
プロキシ最初のパラメータがブロックされることを目的とする、第2のパラメータは、getおよび方法を設定する被検体内部オブジェクトであります
キーが場合P1がデータコールを読み取るとき、方法は、2つのパラメータ、対象者である対象データを取り得る介して取得することで、鍵データはP1によって読み取られ
たデータを読み取るようなコードの上記20本のラインとして、それがトリガされます方法は以下の通りでした
方法は、データP1、3つの内部パラメータ、最初またはターゲット、または第2のキーを設定するトリガーによって設定されたとき、第3の値は、の値に設定されています
キーは、エラーメッセージを与えたあなたのセックスセックスに代わって設定される場合、我々は、キーによって判断することができます
そうでない場合、データ・セットにターゲット[キー] =値によって
上記のように、まだあなたは内部のセットでより多くの処理ロジックを行うことができますので、非常に良い感じ、そして相対ES3とES5のプロキシ、プロキシの用語を使用することです