面试题答案
一键面试基本语法
在 JavaScript 中,Proxy
对象用于创建一个代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)。其基本语法如下:
const proxy = new Proxy(target, handler);
target
:需要使用Proxy
包装的目标对象(可以是任何类型的对象,包括原生数组,函数,甚至另一个代理)。handler
:一个通常以字面量对象形式出现的占位符对象,其包含了对各种操作进行自定义的方法。
用途
- 拦截和自定义操作:可以拦截对象的各种操作,如属性访问、赋值、枚举、函数调用等,并自定义这些操作的行为。这在实现数据验证、访问控制、日志记录等方面非常有用。
- 实现元编程:允许开发者在运行时对对象的行为进行编程,从而实现更灵活和强大的功能。例如,可以创建具有特殊行为的对象,这些行为在普通对象中是无法实现的。
拦截对象属性读取操作示例
const target = {
name: 'John'
};
const handler = {
get(target, property) {
if (property in target) {
return target[property];
} else {
return `Property '${property}' does not exist`;
}
}
};
const proxy = new Proxy(target, handler);
console.log(proxy.name); // 输出: John
console.log(proxy.age); // 输出: Property 'age' does not exist
在上述示例中,通过Proxy
的handler
对象的get
方法,拦截了对target
对象属性的读取操作。当读取存在的属性时,返回其对应的值;当读取不存在的属性时,返回自定义的提示信息。