proxy应用场景
//场景一:可以修改对象的值
let o = {
name: 'xiaoming',
price: 190
}
let d = new Proxy(o,{
get (target,key){
if(key === 'price'){
return target[key] + 20
}else{
return target[key]
}
}
})
console.log(d.price,d.name)
//场景二:不修改其代理的值,只读
let o = {
name: 'xiaoming',
price : 190
} let d = new Proxy(o,{
get (target,key) {
return target[key]
},
set (target, key, value) {
return false
}
})
d.price = 300
console.log(d.price,d.name) //es5实现只读,缺点:客户和程序员都不能修改
for(let [key] of Object.entries(o)) {
Object.defineProperty(o,key,{
writable: false
})
}
o.price = 300
console.log(d.price,d.name)
//场景三:不破坏数据接口,符合校验规则
let o = {
name: 'xiaoming',
price : 190
}
let validator = (target, key, value) => {
if(Reflect.has(target,key)) {
if(key === 'price') {
if(value > 300) {
return false
}else {
target[key] = value
}
}else {
target[key] = value
}
}else{
return false
}
}
let d = new Proxy(o, {
get (target, key) {
return target[key] || ' '
},
set: validator
})
d.price = 203
d.name = 'heiei'
d.age = 30
console.log(d.price,d.name, d.age)
//场景4:生成随机编码,只读
class Component {
constructor () {
this.proxy = new Proxy({
id: Math.random().toString(36).slice(-8)
},{})
}
get id() {
return this.proxy.id
}
}
let com = new Component()
let com2 = new Component()
for(let i = 0; i < 10; i++){
console.log(com.id,com2.id)
}
com.id = '123'
console.log(com.id,com2.id)
//场景5:如何撤销代理
let o = {
name: 'xiaoming',
price : 190
}
let d = Proxy.revocable(o, {
get (target, key) {
if(key === 'price') {
return target[key] + 20
}else {
return target[key]
}
}
})
console.log(d.proxy.price, d)
setTimeout(function () {
d.revoke()
setTimeout(function () {
console.log(d.proxy.price)
},100)
},1000)
proxy应用场景的更多相关文章
- ES6 Proxy的应用场景
一.相关API Proxy Reflect 二.Proxy应用场景 1.数据校验 表单提交的时候做数据校验,例如年龄是不是满足条件,数据类型是不是满足要求等等,这场场景非常适合使用Proxy. 下面展 ...
- es6学习笔记-proxy对象
前提摘要 尤大大的vue3.0即将到来,虽然学不动了,但是还要学的啊,据说vue3.0是基于proxy来进行对值进行拦截并操作,所以es6的proxy也是要学习一下的. 一 什么是proxy Prox ...
- 自学Zabbix13.1 分布式监控proxy介绍
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix13.1 分布式监控proxy介绍 zabbix2.4版本之前,zabbix提供了 ...
- zabbix proxy分布式监控部署
一.proxy分布式监控介绍 来源于zabbix官网: https://www.zabbix.com/documentation/3.4/zh/manual/distributed_monitorin ...
- (33)zabbix proxy分布式监控配置
概述 zabbix proxy可以代替zabbix server检索客户端的数据,然后把数据汇报给zabbix server,并且在一定程度上分担了zabbix server的压力.zabbix pr ...
- zabbix监控之zabbix-agent被动变为主动,搭建Proxy代理
1.Agent被动变为主动:环境设定 base2 172.25.78.12 zabbix-serverbase3 172.25.78.13 zabbix-agent开启服务 # 在服务端[root@b ...
- zabbix--分布式监控proxy
zabbix 分布式监控代理(proxy) 概述: zabbix proxy 可以代替 zabbix server 收集性能和可用性数据,然后把数据汇报给 zabbix server,并且在一定程度上 ...
- zabbix proxy配置实战案例
zabbix proxy配置实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.zabbix proxy概述 上一篇博客我们分享了zabbix agent有两种工作模式,即 ...
- zabbix server&proxy部署操作过程
zabbix server&proxy部署操作过程 系统:ubuntu20.04 zabbix版本: 5.4 安装zabbix server 安装方式: 包管理安装,docker,源码,app ...
随机推荐
- Vue+node.js实现一个简洁的个人博客系统
本项目是一个用vue和node以及mysql实现的一个简单的个人博客系统,整体逻辑比较简单.但是可以我们完整的了解一个项目从数据库到后端到前端的实现过程,适合不太懂这一块的朋友们拿来练手. 本项目所用 ...
- [竞赛]Beat Matching(对拍)
对拍的基本理论这里恕我不一一叙述,不会的请转身到这里:http://blog.csdn.net/code12hour/article/details/51252457 分为以下几个部分: 1.暴力伪标 ...
- springboot中redis做缓存时的配置
import com.google.common.collect.ImmutableMap;import org.slf4j.Logger;import org.slf4j.LoggerFactory ...
- JMeter JMS测试计划
在本节中,我们将学习如何编写一个简单的测试计划来测试Java Messaging Service(JMS). 出于测试目的,我们使用Apache ActiveMQ.有各种JMS服务器,如:glassf ...
- 再也不学Threadlocal了,看这一篇就忘不掉了(万字总结)
为什么要学习ThreadLocal呢?因为面试官经常问,而且在线程中使用它可以给我们提供一个线程内的本地局部变量,这样就可以减少在一个线程中因为多函数之间的操作导致共享变量传值的复杂性,说白了,我们使 ...
- 2019 沈阳网络赛 Fish eating fruit
这题看了三个月,终于过了,第一次看的时候没学树形DP,想用点分治但是不会 后来学了二次扫描,就有点想法了.... 这东西也真就玄学了吧... #include<iostream> #inc ...
- beta week 1/2 Scrum立会报告+燃尽图 01
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/9911 git地址:https://e.coding.net/Eustia ...
- 【题解】有标号的DAG计数4
[HZOI 2015] 有标号的DAG计数 IV 我们已经知道了\(f_i\)表示不一定需要联通的\(i\)节点的dag方案,考虑合并 参考[题解]P4841 城市规划(指数型母函数+多项式Ln),然 ...
- 超详细Node安装教程
今天周末休息,我制定了我的2020年度规划,其中包含编写50篇养成写博文的习惯.算下来平均每周一篇,感觉也不是很难,但我的写作能力不是很好,争取一次比一次好!希望自己能够坚持下去.2020为自己而活, ...
- Python基础(一):初识基本数据类型
这个系列主要是对以往学过的Python3基础的总结和回顾. Python的基本数据类型包含数字.字符串.列表.元组.字典.集合几大类. 在介绍基本数据类型之前,先说明三个Python内建方法,有助于认 ...