首页 >

es6中proxy的用法是什么

web前端|前端问答es6中proxy的用法是什么
ES6
web前端-前端问答
文章浏览源码,vscode选中多行删除,ubuntu怎么分割,tomcat内存默认多大,sqlite3添加密码,爬虫陶瓷灯坏了如何能发现,php 返回状态,怀化360seo优化,下载网站的php原页面,joomla模板免费模板下载lzw
es6中proxy的用法是什么
pdf转jpg 源码,vscode怎么做网页,ubuntu访问磁盘,tomcat配置启用压缩,香港买爬虫,curl正则php,响水seo优化业务流程,基于php做的网站下载,未关注 模板消息lzw
Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器”。下面是官方文档对proxy的一个定义。
建站公司整站源码,vscode远程调试本地,ubuntu拼音灰色,tomcat偶尔慢,sqlite 截取字符串,微博热点情绪分析爬虫技术,php免费商城系统,陕西seo网络推广价格,保存网站原代码的工具,网页浮动图标,新办会员短信模板lzw
let p = new Proxy(target, handler);

target :需要使用Proxy包装的目标对象(可以是任何类型的对象,包括原生数组,函数,甚至另一个代理)。

handler: 一个对象,其属性是当执行一个操作时定义代理的行为的函数(可以理解为某种触发器)。

ES6中提出了一个新的特性,就是proxy,用来拦截在一个对象上的指定操作。这个功能非常的有用。举一个例子来说:

var engineer = { name: 'Joe Sixpack', salary: 50 };var interceptor = { set: function (receiver, property, value) {  console.log(property, 'is changed to', value);  receiver[property] = value; }};engineer = Proxy(engineer, interceptor);

engineer对象被代理Proxy构建的代理对象代替,传入Proxy的第二个参数是一个处理器函数,一个处理器函数有多种方法,如get、set等方法。这里的set方法能够拦截到那些在代理对象身上进行的所有的属性赋值操作。

当我们执行下面赋值:

engineer.salary = 60;

会触发处理器,输出信息:

salary is changed to 60

每当代理对象被赋值,处理器函数就会调用,这样就可以用来调试某些问题。

当然了,Proxy可不是仅仅为了调试而诞生的,如果你用过Sencha Touch 或者 AngularJS的话,就会发现这些框架都是类似数据模型绑定的功能。

笔者曾在Sencha Touch中用过代理,代码如下:

proxy:{//数据代理//       type:'localstorage',//       id:'bills',    // limitParam:'limit',    // pageParam:'page',    //将用户代理改为sql,通过websql来解决localstorage的5MB存储上限的问题    type:'sql',    database:'myDB',    table:'bill',},//filters:[{property:"kind",value:"无"}],//过滤属性listeners:{    removerecords:function(){      console.log("数据被删除");    },    addrecords:function(){      console.log("数据被追加");    },    updaterecord:function(){      console.log("数据被修改");    },}

可以看到,它采用的是一种监听setter和getter的办法,而在Angular中采用的则是脏检测。。当我们有了Proxy后,对于简单的数据模型绑定就可以简化这些特定的检测方式了。


  • 暂无相关文章
  • Posted in 未分类