面试题答案
一键面试基本语法
在JavaScript中,Proxy
用于创建一个代理对象,它可以用来代理和自定义另一个对象(目标对象)的操作。基本语法如下:
const target = {};
const handler = {};
const proxy = new Proxy(target, handler);
其中,target
是要代理的目标对象,handler
是一个包含捕获器(trap)的对象,这些捕获器定义了在执行各种操作时代理的行为。
用途
- 拦截和自定义操作:可以拦截对象的各种操作,如属性访问、赋值、枚举、函数调用等,并自定义这些操作的行为。
- 数据验证和过滤:在对对象进行操作前进行数据验证,确保数据的合法性。
- 访问控制:控制对对象属性的访问权限,例如某些属性只能在特定条件下访问。
- 日志记录:在对象操作发生时记录日志,方便调试和监控。
拦截对象的属性读取操作示例
const person = {
name: 'John',
age: 30
};
const handler = {
get(target, property) {
if (property in target) {
return target[property];
} else {
return `Property '${property}' does not exist`;
}
}
};
const proxy = new Proxy(person, handler);
console.log(proxy.name); // 输出: John
console.log(proxy.address); // 输出: Property 'address' does not exist
在上述示例中,通过 Proxy
的 handler
的 get
捕获器,拦截了对 proxy
对象属性的读取操作。如果属性存在于目标对象 person
中,则返回该属性的值;否则,返回一个提示信息。