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

javascriptobject oriented programmingfront end technology

Proxy()

ECMAScript 6 引入的新功能之一是 proxy() 对象。 Proxy() 对象用于定义基本操作的自定义行为(例如,属性查找、赋值、枚举、函数调用等)。

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

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

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

3) target - 它是一个代理虚拟化的对象。

语法

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() 内定义的处理程序会将 target  和请求的键名传递到"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

相关文章