JavaScript中proxy()对象的用途是什么?

Proxy()

ECMAScript 6引入的新功能之一是proxy()对象。该代理()对象被用来定义基本操作(如财产查找,分配,枚举函数调用等),自定义行为。

Proxy()对象包含3个关键术语

1)handler- 它是一个包含陷阱的占位符对象。

2)陷阱 -陷阱提供属性访问。

3)目标 -它是对象,代理将对其进行虚拟化。

语法

var p = new Proxy(target, handler);

在下面的示例中,有一个名为“ p”的对象,它具有一些属性。当我们尝试执行对象中未定义的属性时,将执行undefined,如输出所示。

示例

<html>
<body>
<script>
   var p = {
      Name: 'Ram kumar',
      Age: 27
   };
   document.write(person.Name);
   document.write("</br>");
   document.write(person.Age);
   document.write("</br>");
   document.write(person.designation);
</script>
</body>
</html>

输出结果

Ram kumar
27
undefined


使用proxy()时 ,我们可以消除未定义的输出。Proxy()尝试使用“ get ”关键字捕获未知属性。在proxy()内定义的处理程序将把目标 和请求的键名传递到“ get ”陷阱中。

在下面的示例中,对象“ p”最初没有名称和作用。但是稍后,当proxy()进入画面时,使用' get '捕获了对象及其属性,并显示了未分配的属性,如输出所示。    

示例

<html>
<body>
<script>
   var p = {
      Name: 'Ram kumar',
      Age: 27
   };
   var handler = {
      get: function(target, prop) {
         return prop in target ? target[prop] : 'Content developer';
      }
   };
   var prox = new Proxy(p, handler);
   document.write(prox.Name);
   document.write("</br>");
   document.write(prox.Age);
   document.write("</br>");
   document.write(prox.designation);
   document.write("</br>");
   document.write(prox.role);
</script>
</body>
</html>

输出结果

Ram kumar
27
content developer
content developer