MST

星途 面试题库

面试题:TypeScript中Proxy和Reflect的基础使用

请用TypeScript代码实现一个简单的Proxy,拦截对象的属性读取操作,并使用Reflect来转发默认行为,同时说明Proxy和Reflect各自的作用。
14.9万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
const target = {
    name: 'example'
};

const handler = {
    get(target, property) {
        console.log(`拦截读取属性 ${String(property)}`);
        return Reflect.get(target, property);
    }
};

const proxy = new Proxy(target, handler);

console.log(proxy.name);

Proxy 的作用

Proxy 用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)。通过创建 Proxy 实例,可以在不直接修改对象的情况下,对对象的各种操作进行控制,增加了代码的灵活性和可扩展性。例如可以实现数据验证、访问控制、日志记录等功能。

Reflect 的作用

Reflect 是一个内置的对象,它提供了一系列静态方法,这些方法与对象的各种元操作相对应,例如 Reflect.get 用于获取对象属性值、Reflect.set 用于设置对象属性值等。它的主要作用是将原本属于语言内部的操作以函数的形式暴露出来,使得可以像调用普通函数一样调用这些操作,同时它与 Proxy 配合使用,可以更方便地转发默认行为,保持代码简洁且语义清晰。