当前位置:首页 > CN2资讯 > 正文内容

proxy [ˈprɒksi] 代理

2天前CN2资讯

谷歌、QQ支持,360、搜狗不支持

使用proxy代理可以实现,对原先的类不进行处理,新建一个类,对此进行拦截处理,以实现低耦合

可以通过代理拦截的方法,将方法进行重写。

//--------------例1--------------

let obj = {   webName: '百度',   url: 'www.baidu.com' } let p = new Proxy(obj,{   get: function(target,key){     return target[key]   },   set: function(target,key,value){     target[key] = value   } }); p.webName = 'baidu'; console.log(p.webName);

//------------例2-------------

Proxy实际上重载(overload)了点运算符

var proxy = new Proxy(target,handler); class Register{ // 定义一个类   constructor(){     this.prefix = '';      = '';     console.log('构造完成');   } } let obj = new Register(); // 使用new方法新建一个类 let p = new Proxy(obj,{ // 定义一个代理,起到拦截作用 将使用new方法创建的类使用Proxy代理   get: function(target,key){     return target[key];   },   set: function(target,key,value){     if(key == 'id' && value == 15){       target['prefix'] = '此人是逃犯';     }     target[key] = value;     if(key == 'name'){       value = target[key] + ',' + target['prefix'];     }     return Reflect.set(target,key,value); // 调用反射,当set全部结束,输出的时候会调动get方法   } }); = 1; // . 会自动调用get和set方法 = '张三'; // 相当于 调用set console.log(); = 15; = '李四'; console.log();

实例:

//-----------------------------------

Proxy对象方法列表:

 方法                                                          描述

handler.apply()                       拦截Proxy实例作为函数调用的操作

handler.construct()                 拦截Proxy实例作为构造函数调用的操作

handler.defineProperty()          拦截Object.defineProperty操作

handler.deleteProperty()          拦截delete删除属性操作

handler.enumerate()               此方法将被废弃,不建议使用

handler.get()                          拦截属性的读取操作

handler.getOwnPropertyDescriptor()  拦截Object.getOwnPropertyDescriptor()操作

handler.getPrototypeOf()          拦截获取原型对象操作

handler.has()                          拦截属性检索操作

handler.isExtensible()              拦截Object.isExtensible()操作

handler.ownKeys()                  拦截Object.getOwnPropertyNames()操作

handler.preventExtensions()     拦截Object.preventExtensions()操作

handler.set()                          拦截属性赋值操作

handler.setPrototypeOf()         拦截Object.setPrototypeOf()操作

Proxy.revocable()                    创建一个可取消的Proxy实例

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/25196.html

    分享给朋友:

    “proxy [ˈprɒksi] 代理” 的相关文章

    VPS重装系统的详细步骤与最佳实践

    在管理VPS时,有时会需要进行系统重装。VPS重装系统是指对虚拟专用服务器(Virtual Private Server)的操作系统进行全面重置和重新安装的过程。它可以帮助解决一些由于系统故障、配置错误或其他原因引发的问题。对于我来说,了解这一过程至关重要,可以让我更好地维护和管理我的服务器。 当我...

    详细指南:如何进行Linux扩容以解决存储不足问题

    什么是Linux扩容? 在使用Linux操作系统时,随着数据的增加,我们常常面临磁盘空间不足的问题。Linux扩容就是通过添加新的磁盘、扩展现有磁盘容量或利用逻辑卷管理(LVM)等方式,来增加系统的存储空间。扩容可以帮助我更好地管理数据,提高服务器的运行效率。 我记得第一次接触扩容时,面对不断增加的...

    甲骨文云账号如何注销:详尽步骤与注意事项

    甲骨文云账号注销流程 注销甲骨文云账号的流程其实并不复杂,但有几个关键步骤需要认真对待。整个过程主要分为几个部分,包括登录甲骨文云控制台、发起注销请求、查看注销请求状态,以及最后的等待和确认删除。 1.1 甲骨文云控制台的登录 进入甲骨文云控制台的第一步,就是要登录到你的账号。打开浏览器,访问甲骨文...

    Linode新加坡服务器速度与性能评测

    Linode新加坡服务器概述 在当今互联网的快速发展中,选择一款合适的服务器至关重要。Linode是一个备受欢迎的云服务提供商,凭借其强大的全球服务网络而受到许多用户的信任。尤其是Linode的新加坡服务器,以其优越的速度和性能而显得尤为突出。 Linode在多个国家和地区设有数据中心,其中新加坡的...

    如何有效进行Payoneer绑定PayPal的详细步骤指南

    在目前的数字支付环境中,Payoneer和PayPal是两个广受欢迎的支付平台。首先,Payoneer(派安盈)是一个全球化的支付解决方案,专为跨境电商卖家、独立站卖家及B2B外贸商家设计。它支持多种货币的收付款服务,覆盖190个国家,包含了70种币种。这意味着无论在哪个地方进行交易,Payonee...

    AWS在日本的云计算市场发展与投资前景分析

    在讨论AWS在日本的市场背景时,我觉得日本的云计算市场是一个非常吸引人的话题。日本的经济科技发展水平相对较高,企业和政府机构对于云计算的接受度和需求不断增加。这种需求尤为体现于各个行业,比如金融、医疗、教育等。许多传统的行业正在努力向数字化转型,寻找更高效、可靠的解决方案。 2011年,AWS决定在...