最近,我正在阅读一些不太著名的javascript功能,并且找到了Javascript Proxy 。
在探讨原因之前,让我们先了解一下它是什么。 如果您已经知道,请随时跳过几段。
代理是javascript中的一个对象,它包装一个对象或函数并通过称为target的对象对其进行监视。 与包装对象或函数的存在无关。 代理类似于其他语言中的元编程。
在继续之前,我们需要了解3个关键术语:
- 目标 :要代理的对象或功能。
- 处理程序:对代理的对象或函数执行某些操作的函数。
- 陷阱 :这些是用于目标的一些功能。 单击此处以了解有关陷阱的更多信息。
下面是我们的定义方式
我们使用ES6中的代理类,参数,目标是包装对象,处理程序将是使用陷阱对目标执行某些操作的函数。
以下是其用法的简单示例
我们制作了两个对象,分别是target和handler,target是带有消息键的简单对象,handler是具有get键和与其关联的功能的对象。 我们在代理类中传递2个对象,然后返回一个代理对象,通过它我们可以访问目标对象的message属性。
这是一个如何使用它来验证对象值的小例子
我们使用一个空对象作为目标对象,并使用一个对目标对象进行设置陷阱并进行验证的处理程序。 很简单吧!
让我们研究一下如何使用它进行API调用包装 。
我们使用过axios ,然后使用baseURL创建了一个实例,为代理创建了一个处理程序,该处理程序返回了要使用的get,post,put,delete,patch函数的对象,最后制作了一个api对象,它是一个代理对象到一个空对象目标。
然后我们可以将其用作:
这可以扩展为进行验证,值校正,跟踪属性访问,有关未知属性的警告,否定的数组索引,数据绑定,访问宁静的Web服务(方法调用),可撤销的引用,监视异步功能,类型检查以及更多内容,请阅读这里更多
我个人发现javascript代理在静态Web服务,验证,监视异步功能中非常有用。 我将探索更多。
旁注 :可以优化所使用的示例。
这是我关于medium的第一篇文章,或者我应该说新的写作旅程开始了。 😄
我很高兴收到任何正面或负面的反馈。
如果您喜欢这篇文章,请推荐并分享以帮助其他人找到它!
From: https://hackernoon.com/why-to-use-javascript-proxy-5cdc69d943e3