首页 技术 正文
技术 2022年11月9日
0 收藏 736 点赞 3,302 浏览 1124 个字

最近在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请求的一种方式【做积累】,请求是个异步的操作,如何将请求结果放入代理对象的缓存中,具体实践项目中自己去研讨。

【完】

让我们攀上高峰的不是奇招,而是熟能生巧的基本功。能成为顶尖高手并没有什么秘诀,而是对基本技能的东西有更深的理解。每天都要学得更深一点而不是更广一点,因为学得更深可以让我们把潜力中哪些看不到、感受不到但又极具创造力的部分挖掘出来。——乔希·维茨金 《学习之道》

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,948
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,474
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,287
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,102
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,734
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,769