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