ES6的Proxy
最近在Javascript的设计编程中,用到的那个单例模式,感觉就类似一种代理的思想【其实就是缓存的一种机制】,单例模式就是:
function getSingle(fn){
var result;
return function(){
return result || (result = fn.apply(this,arguments));
}
}
任何在getSingle传入方法的函数,都会具有单例模式,就类似于缓存的思想,函数的执行得先过getSingle,它里面有个result的缓存,有缓存返回缓存,但是跟ES6的Proxy还是有点区别。
var proxy = new Proxy(target, handler);
target是代理的对象,handler是参数,也是一个对象,定制拦截行为。
var proxy = new Proxy({}, {
get: function(target, property) {
return 35;
}
});
let obj = Object.create(proxy);
obj.time //
看这段代码:obj直接原型继承了代理对象proxy,那么访问obj的属性时,如果自身没有属性,就会访问原型链。
Proxy代理的用处很多,方法get,set,apply,has,construct等方法,多看些大神的用法,后面慢慢孰能生巧吧,知道这个东西是干嘛的,以后怎么用还得实际项目或者练习中进行巩固啦。
这里介绍几种代理(Proxy)方式:
虚拟代理把一些开销很大的对象,延迟到真正需要它的时候才去创建。比如说:ajax请求,如果用户请求次数过多,当接收到用户的请求时候,客户端先自己缓存进入代理对象,代理来决定是否真正进行ajax请求。这个就是虚拟代理。
保护代理是控制不同权限的对象对目标对象的访问。
代理的作用:
本体不愿意做的事情,可以交给代理去做,保证本体对象的功能的纯净和低耦合性。
代理和本体接口的一致性,保证了用户可以放心去请求代理,因为用户只关心能否得到想要的结果,任何请求本体的地方都可以去替换成代理完成。
还有一种缓存代理,就是写个代理方法,里面有个cache保存之前请求的数据,其实实际项目中经常有这样的需求,也是一种优化,缓存代理能够减少http请求次数,其实虚拟代理也是能够减少http请求的一种方式【做积累】,请求是个异步的操作,如何将请求结果放入代理对象的缓存中,具体实践项目中自己去研讨。
【完】
ES6的Proxy的更多相关文章
- 详解es6中Proxy代理对象的作用
在es6中新添加了Proxy,那么它有什么作用啊?Proxy本意为代理,而es6中的Proxy也就是代理对象,那么代理对象感觉听起来很模糊,在这里就解释一下Proxy代理对象的作用. Proxy的主要 ...
- [每日一题]面试官问:谈谈你对ES6的proxy的理解?
[每日一题]面试官问:谈谈你对ES6的proxy的理解? 关注「松宝写代码」,精选好文,每日一题 作者:saucxs | songEagle 一.前言 2020.12.23 日刚立的 flag,每日一 ...
- 深度揭秘ES6代理Proxy
最近在博客上看到关于ES6代理的文章都是一些关于如何使用Proxy的例子,很少有说明Proxy原理的文章,要知道只有真正掌握了一项技术的原理,才能够写出精妙绝伦的代码,所以我觉得有必要写一篇关于深刻揭 ...
- ES6之Proxy及Proxy内置方法
Proxy是ES6提供的代理器可以起到拦截作用,写法形式如 var proxy = new Proxy(target,handler);参数target表示要拦截的目标对象,handler是用来定制拦 ...
- es6之Proxy,Reflect
Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写. var proxy = new Proxy(ta ...
- ES6之Proxy 的巧用
摘要: Proxy的骚操作. 作者:前端小智 原文:Proxy 的巧用 Fundebug经授权转载,版权归原作者所有. Proxy 介绍 使用Proxy,你可以将一只猫伪装成一只老虎.下面大约有6个例 ...
- ES6 之 Proxy
概述 Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改. Proxy 可以理解在目标对象架设一个“拦截”层外界对该对象的访问都必须先通过这层拦截,因此提供了一种机制可以对外界的访问进行 ...
- ES6的Proxy和Reflect
Proxy 有一个原始的数据对象,通过代理出来一个新的对象,用户操作的是这个新的对象 { let obj ={ time:'2018-01-01', name:'lx' , _r:123 } let ...
- es6(11)--Proxy,Reflect
//Proxy,Reflect { let obj={ time:'2018-06-25', name:'net', _r:123 }; let monitor = new Proxy(obj,{ / ...
随机推荐
- VisualStudioAddin2016Setup.rar
本工具是用于Visual Studio 2010 /2012 的外接程序. 功能不太多,常用代码,引用管理等. 动态图: 下载地址: VisualStudioAddin2016Setup.rar
- Java逆向工程(数据库表生成java类)
说起来倒是挺简单的,就是听着名字感觉挺高大上.逆向工程方式有很多,比如mybatis就提供了一个这样的工具mybatis-genderator,这个我反正是没用过只是听说过,以前在公司都是用公司写好的 ...
- F5 BIG-IP之二 LTM实验一
- Leetcode1_两数之和
题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同 ...
- Java IO: FileReader和FileWriter
作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本章节将简要介绍FileReader和FileWriter.与FileInputStream和File ...
- Nginx笔记总结十一:Nginx重写规则指南
依赖PCRE库,需要安装pcre,最多循环10次,超过后返回500错误, 1. rewrite模块指令 break:完成当前设置的重写规则,停止执行其他的重写规则 if: if () { ...
- 转:B树和B+树的插入、删除图文详解
如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 1. B树 1. B树的定义 B树也称B-树,它是一颗多路平衡查找树.我们描述一颗B树时需要指定它的阶数,阶数表示了 ...
- 从广义线性模型(GLM)理解逻辑回归
1 问题来源 记得一开始学逻辑回归时候也不知道当时怎么想得,很自然就接受了逻辑回归的决策函数--sigmod函数: 与此同时,有些书上直接给出了该函数与将 $y$ 视为类后验概率估计 $p(y=1|x ...
- 传统if 从句子——以条件表达式作为if条件
传统if 从句子——以条件表达式作为 if条件if [ 条件表达式 ]then command command commandelse command commandfi 条件表达式 文件表达式 ...
- SWUST OJ 有趣的三位数(0319)
有趣的三位数(0319) Time limit(ms): 1000 Memory limit(kb): 65535 Submission: 158 Accepted: 62 Description ...