`

ES6中Proxy代理使用

 
阅读更多
{
  let obj={
    time:'2017-03-11',
    name:'net',
    _r:123
  };

  let monitor=new Proxy(obj,{
    // 拦截对象属性的读取
    get(target,key){
      return target[key].replace('2017','2018')
    },
    // 拦截对象设置属性
    set(target,key,value){
      if(key==='name'){
        return target[key]=value;
      }else{
        return target[key];
      }
    },
    // 拦截key in object操作
    has(target,key){
      if(key==='name'){
        return target[key]
      }else{
        return false;
      }
    },
    // 拦截delete
    deleteProperty(target,key){
      if(key.indexOf('_')>-1){
        delete target[key];
        return true;
      }else{
        return target[key]
      }
    },
    // 拦截Object.keys,Object.getOwnPropertySymbols,Object.getOwnPropertyNames
    ownKeys(target){
      return Object.keys(target).filter(item=>item!='time')
    }
  });

  console.log('get',monitor.time);

  monitor.time='2018';
  monitor.name='mukewang';
  console.log('set',monitor.time,monitor);

  console.log('has','name' in monitor,'time' in monitor);

  // delete monitor.time;
  // console.log('delete',monitor);
  //
  // delete monitor._r;
  // console.log('delete',monitor);
  console.log('ownKeys',Object.keys(monitor));

}

 

分享到:
评论

相关推荐

    es6-proxy-polyfill:ES6 Proxy polyfill,支持IE8 +,Node.js等

    ES6代理Polyfill 这是ES6 Proxy的polyfill,支持IE6 + ,Node.js等。 到目前为止,它比GoogleChrome的支持更多功能。 polyfill仅支持有限数量的代理“陷阱”: 得到 放 申请 构造 还支持Proxy.revocable方法,但...

    详细探究ES6之Proxy代理

    ES6中的箭头函数、数组解构、rest 参数等特性一经实现就广为流传,但类似 Proxy 这样的特性却很少见到有开发者在使用,一方面在于浏览器的兼容性,另一方面也在于要想发挥这些特性的优势需要开发者深入地理解其使用...

    ES6中Proxy代理用法实例浅析

    本文实例讲述了ES6中Proxy代理用法。分享给大家供大家参考,具体如下: ES6中提出了一个新的特性,就是proxy,用来拦截在一个对象上的指定操作。这个功能非常的有用。举一个例子来说: var engineer = { name: 'Joe...

    详解ES6中的代理模式——Proxy

    代理模式(英语:Proxy Pattern)是程序设计中的一种设计模式。 所谓的代理者是指一个类别可以作为其它东西的接口。代理者可以作任何东西的接口:网络连接、内存中的大对象、文件或其它昂贵或无法复制的资源。 著名...

    ajax-proxy:拦截es6代理重构XMLHTTPRequest的Ajax代理

    ajax-proxy是一个用ES6中代理特性实现的用于代理原生对象XMLHttpRequest的库,它可以使您从对XMLHttpRequest进行操作。 使用 安装 CDN约会 < script > ...

    JavaScript中的ES6 Proxy的具体使用

    JavaScript中的ES6 Proxy是一种强大的工具,它允许开发者创建一个代理对象来拦截并控制对原对象的访问。在本文中,我们将深入探讨Proxy的使用场景、功能以及如何利用它来解决实际问题。 首先,Proxy可以用来为函数...

    ES6中Proxy与Reflect实现重载(overload)的方法

    `Proxy`是ES6的一个重要特性,它允许我们创建一个代理对象(proxy object),这个代理对象可以拦截并定制对原对象的各种操作。`Proxy`接收两个参数,第一个是被代理的目标对象,第二个是一个配置对象,其中包含了...

    Jewell利用ES6Proxy的功能提供语法糖允许您编写更干净的代码

    在实际使用`Jewell`时,开发者可以创建一个基础类,利用`Proxy`和`Jewell`提供的功能,然后在子类中继承并扩展这些功能。这样,整个代码库可以保持一致且易于维护的风格。 在`jewell-master`压缩包中,可能包含了`...

    ES6 Proxy实现Vue的变化检测问题

    最近,Vue3.0将采用ES6 Proxy的形式重新实现Vue的变化检测,在官方还没给出新方法之前,我们先实现一个基于Proxy的变化检测。 模块划分 参照之前Vue变化检测的代码,将Vue 变化检测的功能分为以下几个部分。 ...

    meteor-es6-proxy:铁

    plugin ( 'es6Proxy' , { path : 'components' // Corresponds to private/components in your app directory debug : true // Console.log path and syntax errors} ) ; ES6 源文件从应用程序的private目录加载。 ...

    js代码-es6-proxy

    Proxy的基本使用方式是通过new Proxy(target, handler)创建一个新的代理对象。这里,`target`是要被代理的原始对象,而`handler`则是一个包含若干方法的对象,这些方法会在特定操作触发时被调用。 ### 1. Handler的...

    proxy-observable:ES6代理可观察的实现。 对象和数组

    请记住,该实现基于ES6代理功能,这安装 npm install proxy-observable --save用法如果您希望对象或数组可观察,则只需调用observable() import observable from "proxy-observable" ;const soldier = { name : ...

    ES6之Proxy的get方法详解

    Proxy是ECMAScript 2015(ES6)新增的一个内置对象,它的出现给我们提供了拦截并定义对象和函数基本操作的能力。Proxy对象允许我们自定义拦截行为,比如属性查找、赋值、枚举、函数调用等。其中,get方法是Proxy对象...

    阮一峰es6教程文档源码

    9. **Proxy和Reflect**:Proxy用于创建一个代理对象,可以拦截并定制对象的访问行为;Reflect提供了一组与Proxy配合的方法,用于执行某些底层操作。 10. **WeakSet和WeakMap**:这两个弱引用数据结构不计入垃圾回收...

    Between是一个基于ES6代理的JavaScript动画库

    `Between` 是一个专为JavaScript设计的动画库,它巧妙地利用了ES6的代理(Proxy)特性,为开发者提供了一种与Cocoa Animation API相类似的流畅动画体验。在JavaScript的世界里,创建平滑、高性能的动画效果一直是一...

    ES6开发文档.docx

    ES6引入了解构赋值的概念,允许开发者使用简洁的方式来提取数组或对象中的值。解构赋值可以用于数组、对象、字符串等数据类型,并且可以与spread操作符结合使用,以实现更复杂的数据处理。 5. ES6 Symbol ES6引入...

    ES6 proxy和reflect的使用方法与应用实例分析

    ES6(ECMAScript 2015)在JavaScript的发展历程中引入了诸多重要的特性,其中Proxy和Reflect就是两个用来扩展语言核心功能的API。它们允许开发者拦截并定义自定义行为的操作,如属性查找、赋值、枚举、函数调用等。 ...

    ES6_es6_

    - **Proxy**:创建一个代理对象,可以拦截并定制对象的访问行为。 - **Reflect**:提供了一套与 Proxy 配套的方法,用于操作对象。 以上是ES6中的核心特性,学习和掌握这些知识点能够帮助开发者编写更现代、更...

Global site tag (gtag.js) - Google Analytics