代理是javascript中的一个对象,它包装了一个对象或函数,并通过称为target的对象对其进行监视。与包装对象或函数的存在无关。代理类似于其他语言中的元编程。
在继续之前,我们需要了解3个关键术语:
- target: 要代理的对象或功能。
- handler: 对代理的对象或函数执行某些操作的函数。
- trap: 这些是用于target的一些功能。单击此处以了解有关trap的更多信息。
下面是我们的定义方式

我们使用ES6中的Proxy Class作为参数,target是包装对象,handler将是使用trap对target执行某些操作的函数。
以下是其用法的简单示例

代理的基本示例
我们使2个对象分别称为target和handler,target是具有message
键的简单对象,而handler是具有get
和与其关联的功能的对象。我们在代理类中传递2个对象,然后返回一个代理对象,通过它我们可以访问target对象的message属性。
这是一个如何使用它来验证对象值的小例子

我们使用一个空对象作为target对象,并使用一个在target对象上设置trap并进行验证的handler。很简单吧!
让我们研究一下如何使用它来进行API call wrapper。

我们使用过axios,然后使用基本URL创建了一个实例,为代理创建了一个handler,该handler返回要使用的get,post,put,delete,patch函数的对象,最后制作了一个API对象,该对象是将对象代理到空对象target。
然后我们可以将其用作:

调用API代理对象
这可以扩展为进行验证,值校正,跟踪属性访问,有关未知属性的警告,否定数组索引,数据绑定,访问宁静的Web服务(方法调用),可撤消引用,监视异步功能,类型检查以及更多内容,
我个人发现javascript代理在restful 的Web服务,验证,监视异步功能中非常有用。
网友评论