MST
星途 面试题库

面试题:JavaScript中代理对象的基本用法

请简述JavaScript中代理对象(Proxy)的基本语法和用途,并举例说明如何使用代理对象来拦截对象的属性读取操作。
48.3万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

基本语法

在JavaScript中,Proxy 用于创建一个代理对象,它可以用来代理和自定义另一个对象(目标对象)的操作。基本语法如下:

const target = {};
const handler = {};
const proxy = new Proxy(target, handler);

其中,target 是要代理的目标对象,handler 是一个包含捕获器(trap)的对象,这些捕获器定义了在执行各种操作时代理的行为。

用途

  1. 拦截和自定义操作:可以拦截对象的各种操作,如属性访问、赋值、枚举、函数调用等,并自定义这些操作的行为。
  2. 数据验证和过滤:在对对象进行操作前进行数据验证,确保数据的合法性。
  3. 访问控制:控制对对象属性的访问权限,例如某些属性只能在特定条件下访问。
  4. 日志记录:在对象操作发生时记录日志,方便调试和监控。

拦截对象的属性读取操作示例

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

在上述示例中,通过 Proxyhandlerget 捕获器,拦截了对 proxy 对象属性的读取操作。如果属性存在于目标对象 person 中,则返回该属性的值;否则,返回一个提示信息。