传统的get,set

ES6 中引入Proxies,让你可以自定义Object的基本操作。例如,get就是Object的基础操作方法。

const obj = {

val: 10

};

console.log(obj.val);

这里,console.log()表达式在对象obj上执行get方法来获取val的值。

另一个对象的基本操作方法是 set。

const obj = {

val: 10

};

obj.val2 = 20;

这里,set方法用来给对象obj设置一个新的值。

proxy

const handler={
get:function(obj,prop){
console.log('get');
return obj[prop];
}
}
const initialobj={
id:1,
name:'Foo Bar'
}
const proxiedObject=new Proxy(initialobj,handler);
console.log(proxiedObject.id);

这个时候我们得到的结果为1,那么这样有什么用呢?可以想象一下假如我们暴露出整个initialobj对象,那么其中的属性会全部暴露出去。

proxy这个意思是代理的意思,那么这个时候我们可以这样处理。

比如我想封装这个initialobj对象,那么我改如何?

或者说我想让id为private,ok,这就是一个困难了。

当然我们有方法的,比如说,拆分,但是这不是ok的。


const handler={
get:function(obj,prop){
if(prop=='id')
{
return 6;
}
console.log('get');
return obj[prop];
}
}
const initialobj={
id:1,
name:'Foo Bar'
}
const proxiedObject=new Proxy(initialobj,handler);
console.log(proxiedObject.id);

这个时候就是返回6了,相当于代理,门卫,引领三个关键词。

<script>
const handler = {
get: function(obj, prop) {
if (prop == "id") {
return 6;
}
console.log("get");
return obj[prop];
},
set: function(obj, prop, value) {
if (typeof value !== "string") {
throw new Error("Only string values can be stored in this object!");
} else {
obj[prop] = value;
}
}
};
const initialobj = {
id: 1,
name: "Foo Bar"
};
const proxiedObject = new Proxy(initialobj, handler);
console.log(proxiedObject.id);
proxiedObject.name = 8;
</script>

set 同样是 代理 门卫 引领 三个关键词来表达。

js es6 Proxy的更多相关文章

  1. ES6 Proxy 性能之我见

    ES6 Proxy 性能之我见 本文翻译自https://thecodebarbarian.com/thoughts-on-es6-proxies-performance Proxy是ES6的一个强力 ...

  2. Vue3.0 响应式数据原理:ES6 Proxy

    Vue3.0 开始用 Proxy 代替 Object.defineProperty了,这篇文章结合实例教你如何使用Proxy 本篇文章同时收录[前端知识点]中,链接直达 阅读本文您将收获 JavaSc ...

  3. js es6 map 与 原生对象区别

    区别 object和Map存储的都是键值对组合.但是: object的键的类型是 字符串: map的键的类型是 可以是任意类型: 另外注意,object获取键值使用Object.keys(返回数组): ...

  4. ArcGIS JS 使用Proxy之 Printing Tools unable to connect to mapServer

    ArcGIS JS使用Proxy.ashx将地图服务隐藏,并在微博服务器端增加了地图服务权限判断. Proxy.ashx做了如下设置, <serverUrl url="http://l ...

  5. 关于vue.config.js 的 proxy 配置

    关于vue.config.js 的 proxy 配置有的同学不怎么明白项目里面有的配置了 pathRewrite 地址重写,有的又没有进行配置?/* * proxy代理配置的说明 * *接口例子:/z ...

  6. es6 proxy代理

    es6 新增构造函数 Proxy Proxy 构造函数,可以使用new 去创建,可以往里面插入两个参数,都是对象 let target = {} let handler = {} let proxy ...

  7. ES6 Proxy的应用场景

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

  8. js ES6 多行字符串 连接字符串

    1. 以前,js多行字符串用\n写起来比较费事,所以最新的ES6标准新增了一种多行字符串的表示方法,用` ... `表示: 旧版写法 alert("你好,\n 我叫\n Olive" ...

  9. ES6 Proxy和Reflect(下)

    construct() construct方法用于拦截new命令. var handler = { construct (target, args) { return new target(...ar ...

  10. ES6 Proxy和Reflect (上)

    Proxy概述 Proxy用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种"元编程"(meta programming),即对编程语言进行编程. Proxy可以理 ...

随机推荐

  1. 了解一下IOC和AOP

    简单学习一下IOC和AOP 聊一聊 IOC& AOP之前,先解释几个问题: AOP的老大哥OOP和老老大哥POP 什么是IoC? IoC 解决了什么问题? 什么是 AOP? AOP 解决了什么 ...

  2. Java-Script 编程

    Java-Script 编程 目录 Java-Script 编程 一. Js概念 1.1 简介 1.2 语法结构 二. 变量使用 2.1 定义变量 2.2 定义常量 三. 数据类型 3.1 数值类型( ...

  3. 删除无用的docker镜像与容器

    docker rm `docker ps -a | grep Exited | awk '{print $1}'` 删除异常停止的docker容器 docker rmi -f `docker imag ...

  4. Python 的结构体函数 struct pack, unpack 用法详解

    一 python 结构体 * python struct 模块可以用来在存储二进制文件,广泛用在文件系统,网络连接领域. *  它可以用在c语言和python语言之间的数据的格式转换. 二  Pyth ...

  5. Docker部署nginx配置SSL多目录

    对自己第一次搭建nginx做个简要的笔记 第一步:创建宿主机挂载点目录 mkdir -p /home/nginx/{conf,conf.d,html,log,ssl} 第二步:安装简易版nginx,复 ...

  6. SQL注入详细讲解概括-GET注入、POST注入、HEAD注入

    SQL注入详细讲解概括-GET注入.POST注入.HEAD注入 1.SQL注入流程 2.GET注入 3.POST注入 4.HEAD注入 一.SQL注入流程 1.SQL注入流程 · 寻找注入点-与数据库 ...

  7. Deeplink实践原理分析

    目录介绍 01.先看一个场景 02.什么是DeepLink 03.什么是Deferred DeepLink 04.什么是AppLink 05.DeepLink和AppLink核心技术 06.DeepL ...

  8. 工作记录:TypeScript从入门到项目实战(进阶篇)

    内置对象的使用 JavaScript中有许多内置对象,可以直接在JavaScript程序中使用,同样的,TypeScript也延续了这些内置对象 全局的对象( global objects )或称标准 ...

  9. 记录--通过手写,分析async await核心原理

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 async await 语法是 ES7出现的,是基于ES6的 promise和generator实现的 generator函数 在之 ...

  10. linux 时钟同步

    yum install ntp -y #cn.pool.ntp.org ntp[1-7].aliyun.com ntpdate ntp1.aliyun.com #把当前系统时间写入到CMOS中 clo ...