ES6(11)とProxyの反映

プロキシ

レット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、 '名前'))

 

おすすめ

転載: www.cnblogs.com/ronle/p/11563989.html