プロキシ レットOBJ = { 時間: '2019年1月1日' 、 名前: 'ronle' } LETモニター = 新しい新しいプロキシ(OBJ、{ // インターセプトオブジェクトの属性は読み GET(ターゲット)、キー{ リターン・ターゲット[キー] .replace(「2019」、「2020」) } // オブジェクトのプロパティインターセプトを設定 (目標、キー、値){セット // 名前にのみ鍵等しいのみ修飾 IF(キー===「名前が」){ 戻り反映します。 SET(ターゲット、キー、値) } 他{ 戻りターゲット[キー] } }、 // 拦截オブジェクト内のキーを操作 している(目標、キー){ 場合(キー=== '名称' ){ 戻りターゲット[キー] } 他{ 戻り 偽 } } // 拦截削除 (キーターゲット)deletePropertyを{ 場合(key.indexOf( ' - ' )){ 削除対象を[キー] 戻り 真 } 他{ 戻りターゲット[キー] } } // 拦截Object.keys // Object.getOwnPropertySymbols //Object.getOwnPropertyNames ownKeys(ターゲット){ 返す Object.keys(ターゲット).filter(項目=>アイテム!== '時間' ) } }) // 2020年1月1日 はconsole.log( 'get'が、monitor.timeを) monitor.time = '2030' monitor.name = 'カカ' // 只有名被修改カカ はconsole.log( 'セット' 、モニタ、monitor.name) にconsole.log( '名前' 'を有する' でモニタ、 '時間' でのモニターは) // //删除掉日期 // monitor.timeを削除する // ( '削除'にconsole.log、モニタ) //は、キーは、時間の要素に等しい等しくないいない返します console.log(「ownKeys」、Object.keys(モニタ))同様のプロキシエージェントと反映方法属性は同じである OBJ LET = { :時間が「2019年1月1日」、 名称:「ronle」 } はconsole.log(リフレクト.get(OBJ、 '時間' )) Reflect.set(OBJ、 '名前'、 'カカ' ) はconsole.log(OBJ) はconsole.log(Reflect.has(OBJ、 '名前'))