Proxy 对象用于定义基本操作的自定义行为(如属性查找,赋值,枚举,函数调用等)。

来看看常用的方法

handler.get()

let o = {
name: 'liwenchi',
age: 10
} var p = new Proxy(o, {
get: function (target, prop) {
console.log('get')
return target[prop];
}
}); console.log(p.name);

handler.set()

!!!!!!!!!!!!!!这里要究极注意!!!!!!!!!!!!!

它拦截器真的拦完就完了,什么都不会帮你做的,例如set,我原以为拦截了以后,如果返回值是true就顺便给你赋值一下,就成功了;如果返回值是false,就不给你赋值,就拦下来了,结果不是这样的。你拦完了以后你自己要赋值一下。

 let p = new Proxy({}, {
set: function (target, prop, value) {
console.log(typeof prop, value);
if (value >= 10) target[prop] = value;
else target[prop] = 10;
},
get: function (target, prop, value) {
if (prop in target) {
return true;
}
else {
return false;
}
}
}) p.a = 1; console.log(p.a, p.b);

例如第四行,你哪怕没有返回值都行,但你一定要自己写target[prop] = value,这样才真正赋值了。

get函数同理,你要自己返回东西的,如果你像我一样,9、12两行写的是返回真或假,你第19行就真的打印真或假,而不是10和undefined。

JavaScript - proxy的更多相关文章

  1. [Javascript] Intercept property access with Javascript Proxy

    A Javascript Proxy object is a very interesting es6 feature, that allows you to determine behaviors ...

  2. Javascript Proxy对象 简介

    Javascript Proxy对象 简介 Javascript Proxy对象 改变你操作对象的方式 Proxies 是Javasript对象的中间件 ...或者说至少是那种很早的版本. ES6 中 ...

  3. ArcGIS For JavaScript API 默认参数

    “esri.config”的是在1.3版中的的“esriConfig”的替代品.如果您使用的是1.2或更低的版本,您应该参阅默认API v1.2和更低的配置.对于版本1.3或更高版本,您可以使用“es ...

  4. ArcGIS api for javascript——以地理处理结果为条件查询地图

    这里发生什么任务呢?当第一次单击地图,单击的坐标被发送到一个Geoprocessor任务.该任务访问服务器上的通过ArcGIS Server 地理处理服务提供的可用的GIS模型.本例中模型计算驱动时间 ...

  5. ArcGIS api for javascript——用缓存区查询地图

    描述 本例展示了如何在另外一个任务里使用一个任务的结果.单击地图查看被单击的点的1公里范围内的缓存(如果需要可以修改这个默认的缓存距离).也可以看缓存区的这些点的人口普查街区信息.单击一个点查看更多的 ...

  6. 2018 – 2019 年前端 JavaScript 面试题

    JavaScript 基础问题 1.使以下代码正常运行: JavaScript 代码: const a = [1, 2, 3, 4, 5]; // Implement this a.multiply( ...

  7. JavaScript 设计模式及代码实现——代理模式

    代理模式 1 定义 为其他对象提供一种代理以控制对这个对象的访问 在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 2 应用举例 2.1 缓 ...

  8. [Architect] ABP(现代ASP.NET样板开发框架) 翻译

    所有翻译文档,将上传word文档至GitHub 本节目录: 简介 代码示例 支持的功能 GitHub 简介 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目) ...

  9. ABP框架系列之八:(Introduction-介绍)

    Introduction We are creating different applications based on different needs. But implementing commo ...

随机推荐

  1. bcrypt 安装不成功解决办法

    同一个项目,公司和家里的 node.js 的版本不同,导致项目安装依赖包时 bcrypt 安装不成功. 家里的版本为:8.11.3 公司的版本为:10.14.2 在当前项目中执行完下面两个命令后,报错 ...

  2. Hive参数

    1.hive当中的参数.变量都是以命名空间开头 2.通过${}方式进行引用,其中system.env下的变量必须以前缀开头 3.hive参数设置方式 1.修改配置文件${HIVE_HOME}/conf ...

  3. 获取OlapConnection连接

    目录: 1.获取org.olap4j.OlapConnection对象 2.获取mondrian.olap.Connection对象 一.org.olap4j.OlapConnection对象 说明: ...

  4. oracle异地备份

    一.安装oracle客户端 右键以管理员身份运行 选择管理员 跳过软件更新 选择语言,默认中文 指定安装位置 检查当前环境 安装 二.使用exp命令备份 exp 用户名/密码@IP地址/数据库 own ...

  5. asp.net FromBody接收不到参数的解决方法

    今天改一个前端框架(angularjs,不兼容ie内核,需要修改),后台框架是已经写好了的,不用修改. 接口接收参数如下: [HttpPost] public async Task<Schedu ...

  6. apache ranger源码编译

    官方文档 http://ranger.apache.org/quick_start_guide.html Quick Start Guide Build Process 1. Check out th ...

  7. C#二维码与条形码的生成

    二维码 using Gma.QrCodeNet.Encoding;using Gma.QrCodeNet.Encoding.Windows.Render; string str = "Htt ...

  8. 一文读懂 JAVA 异常处理

    JAVA 异常类型结构 Error 和 Exeption 受查异常和非受查异常 异常的抛出与捕获 直接抛出异常 封装异常并抛出 捕获异常 自定义异常 try-catch-finally try-wit ...

  9. yaml的用法

    yaml是用来读配置文件的. 一般用yaml或者yml结尾创建文件,格式:key: value.然后在用的时候,像打开文件一样读,返回数据可直接转为字典 使用的时候必须先安装模块并导入.安装:pip ...

  10. QPushButton class

    Help on class QPushButton in module PyQt5.QtWidgets: class QPushButton(QAbstractButton) |  QPushButt ...