1. プロキシとは何ですか?Proxy オブジェクトは、ターゲット オブジェクトの指定された操作を傍受および変更するために使用されます。 // 構文 const p = new Proxy(target, handler)
2. 使い方は?1. プロキシを使用する簡単な例存在しないプロパティにアクセスする場合は、undefined ではなくデフォルト値を返すように設定します。 // 1. 適切なハンドラを見つけてコードを記述する const handler = { 取得: 関数(obj, prop) { obj 内の prop を返します。obj[prop] : 37; } }; // 2. 新しい Proxy オブジェクトを作成します。const p = new Proxy({}, handler); // 3. 操作を実行する pa = 1; pb = 未定義; // 4. 結果を確認する console.log(pa, pb); // 1, undefined console.log('c' in p, pc); // 偽、37 2. 対象オブジェクトが正しく変更されているターゲットを{}とします。 p = new Proxy(target, {}); とします。 pa = 37; // 操作はターゲットに転送されます console.log(target.a); // 37. 操作は正しく転送されました 3. データ検証にセットハンドラを使用するバリデーター = { 設定: 関数(オブジェクト、プロパティ、値) { (prop === '年齢')の場合{ if (!Number.isInteger(値)) { throw new TypeError('年齢は整数ではありません'); } (値>200)の場合{ throw new RangeError('年齢が無効なようです'); } } // 値を保存するデフォルトの動作 obj[prop] = 値; // 成功を示します。true を返します。 } }; person = new Proxy({}, validator); とします。 人.年齢 = 100; console.log(人.年齢); // 100 person.age = '若い'; // 例外がスローされます: Uncaught TypeError: 年齢が整数ではありません 人.年齢 = 300; // 例外をスローします: Uncaught RangeError: 年齢が無効のようです 4. 拡張コンストラクタ関数extend(sup, base) { var 記述子 = Object.getOwnPropertyDescriptor( base.prototype、「コンストラクタ」 ); base.prototype = Object.create(sup.prototype); var ハンドラ = { 構築: 関数(ターゲット、引数) { var obj = Object.create(base.prototype); this.apply(ターゲット、オブジェクト、引数); obj を返します。 }, 適用: 関数(ターゲット、その、引数) { sup.apply(それ、引数); base.apply(それ、引数); } }; var proxy = 新しい Proxy(base, handler); 記述子.値 = プロキシ; Object.defineProperty(base.prototype、"コンストラクタ"、記述子); プロキシを返します。 } var Person = 関数 (名前) { this.name = 名前 }; var Boy = extend(Person, 関数 (名前, 年齢) { this.age = 年齢; }); Boy.prototype.sex = "M"; var Peter = new Boy("Peter", 13); console.log(Peter.sex); // "M" console.log(Peter.name); // "ピーター" console.log(Peter.age); // 13 要約するこの記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: Linux の GRUB ブート プログラムの暗号化の概要
比較演算子でNULLを使用する mysql> 1>NULLを選択します。 +------...
序文この記事では、SQL インジェクションを回避するために pdo の前処理メソッドを使用します。詳...
1. 準備Linux オペレーティング システムをインストールした後、ここで Linux 7 を選択...
1. my.iniファイルにskip-grant-tablesを追加し、MySQLサーバーを再起動し...
目次簡単な紹介1. 現在のgccバージョンを確認する2. gccインストールパッケージ(バージョン1...
データ分析の分野では、データベースは私たちの強力な助けとなります。クエリ時間を受け入れるだけでなく、...
2.1 セマンティクス化により、Webページが検索エンジンに理解されやすくなりますこの章では、We...
1. はじめにSELinux が Linux にもたらす主な価値は、柔軟で構成可能な MAC メカニ...
CSS にカスケード メカニズムがあるのはなぜですか? CSS では、同じ要素の特定のプロパティに同...
1. HTML送信ボタンと下部ボタンの基本構文構造1. HTML送信ボタン入力タグで type=&...
目次1. コンテンツの概要2. 文字セットと文字順序の概念と関係3. MySQL でサポートされてい...
リンクインスタイルとは、すべてのスタイルを 1 つ以上の外部スタイルシート ファイルに配置することで...
目次オブジェクトプロトタイプの値()オブジェクトプロトタイプtoString()シンボル.toPri...
Nginxはバージョン情報を隠すだけでなく、カスタムWebサーバー情報もサポートします。まずは最終的...
binlog は、すべての mysql dml 操作を記録するバイナリ ログ ファイルです。 bin...