//场景一:可以修改对象的值
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应用场景的更多相关文章

  1. ES6 Proxy的应用场景

    一.相关API Proxy Reflect 二.Proxy应用场景 1.数据校验 表单提交的时候做数据校验,例如年龄是不是满足条件,数据类型是不是满足要求等等,这场场景非常适合使用Proxy. 下面展 ...

  2. es6学习笔记-proxy对象

    前提摘要 尤大大的vue3.0即将到来,虽然学不动了,但是还要学的啊,据说vue3.0是基于proxy来进行对值进行拦截并操作,所以es6的proxy也是要学习一下的. 一 什么是proxy Prox ...

  3. 自学Zabbix13.1 分布式监控proxy介绍

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix13.1 分布式监控proxy介绍 zabbix2.4版本之前,zabbix提供了 ...

  4. zabbix proxy分布式监控部署

    一.proxy分布式监控介绍 来源于zabbix官网: https://www.zabbix.com/documentation/3.4/zh/manual/distributed_monitorin ...

  5. (33)zabbix proxy分布式监控配置

    概述 zabbix proxy可以代替zabbix server检索客户端的数据,然后把数据汇报给zabbix server,并且在一定程度上分担了zabbix server的压力.zabbix pr ...

  6. zabbix监控之zabbix-agent被动变为主动,搭建Proxy代理

    1.Agent被动变为主动:环境设定 base2 172.25.78.12 zabbix-serverbase3 172.25.78.13 zabbix-agent开启服务 # 在服务端[root@b ...

  7. zabbix--分布式监控proxy

    zabbix 分布式监控代理(proxy) 概述: zabbix proxy 可以代替 zabbix server 收集性能和可用性数据,然后把数据汇报给 zabbix server,并且在一定程度上 ...

  8. zabbix proxy配置实战案例

    zabbix proxy配置实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.zabbix proxy概述 上一篇博客我们分享了zabbix agent有两种工作模式,即 ...

  9. zabbix server&proxy部署操作过程

    zabbix server&proxy部署操作过程 系统:ubuntu20.04 zabbix版本: 5.4 安装zabbix server 安装方式: 包管理安装,docker,源码,app ...

随机推荐

  1. 关于移动端弹层下的body滚动

    关于移动端弹层下的body滚动 这个问题在移动端挺常见的,网上也有一些解决方法,现在笔者来总结一下:css的解决方案都有兼容问题,js是比较稳定的解决方法(虽然比较麻烦) ps: 本文的例子都是用vu ...

  2. 用Xshell连接谷歌云

    谷歌云服务器,默认用浏览器进行SSH链接,而且也不告知密码.以Centos为例,先使用浏览器连接 1,给root修改密码 1 sudo passwd root 2,编辑ssh配置文件 sudo nan ...

  3. vue 项目使用局域网多端访问并实时自动更新(利用 browser-sync)

    在写vue的项目中时,虽然vue会自动更新页面,但是切换页面切来切去也很麻烦,有时候我们还要在公司另一台电脑或者手机上调试,这时候利用browser-sync插件,无需改动vue的代码即可实现: 1. ...

  4. github 项目搜索技巧-让你更高效精准地搜索项目

    目录 github 搜索技巧 案例 普通搜 搭配技巧搜 限定词 查找某个用户或组织的项目 辅助限定词 还没搞懂的(关于 forks.mirror.issues) 排序(放的是官网的链接) 使用指南 练 ...

  5. 23.logging

    转载:https://www.cnblogs.com/yuanchenqi/article/5732581.html 一 (简单应用) import logging logging.debug('de ...

  6. 它来了,它来了,centos 8 的时代到来了

    简介 Centos 8 已经在2019年9月24日正式发布.由于这是从Red Hat Enterprise Linux(RHEL)派生的Linux发行版,因此CentOS团队必须构建基础结构来支持新引 ...

  7. 018 Ceph的mon和osd的删除和添加

    一.OSD管理 1.1 移出故障osd 查看当前节点的osd的id [root@ceph2 ceph]# df -hT Filesystem Type Size Used Avail Use% Mou ...

  8. 20191121-10 Scrum立会报告+燃尽图 06

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/10070 一:组名: 组长组 组长:杨天宇 组员:魏新  罗杨美慧  王歆 ...

  9. 洛谷$P1390$ 公约数的和 欧拉函数

    正解:欧拉函数 解题报告: 传送门$QwQ$ 首先显然十分套路地变下形是趴 $\begin{align*}&=\sum_{i=1}^n\sum_{j=1}^n gcd(i,j)\\&= ...

  10. 洛谷$P2598\ [ZJOI2009]$狼和羊的故事 网络流

    正解:网络流 解题报告: 传送门! 昂显然考虑最小割鸭$QwQ$,就考虑说每个土地要么属于羊要么属于狼,然后如果一条边上是栅栏一定是相邻两边所属不同. 所以考虑给所有羊向$S$连$inf$,所有狼向$ ...