Proxy 元编程:拦截器模式与动态行为注入
使用 JavaScript Proxy 实现拦截器、属性验证、日志记录和延迟初始化等高级模式。 · 难度:入门 · +10XP
Proxy 元编程:拦截器模式与动态行为注入
Proxy 是 ES6 引入的强大元编程工具。本教程将演示如何利用 Proxy 拦截对对象的操作,例如 get、set、has、deleteProperty 等。我们会构建一个带有类型验证和自动日志记录的对象包装器,并且实现惰性加载属性——只有在首次访问时才计算值。这些模式在生产代码中用于数据校验、API 响应缓存和响应式系统。
function createValidator(target) {
const schema = {
name: 'string',
age: 'number'
};
return new Proxy(target, {
set(obj, prop, value) {
if (schema[prop] && typeof value !== schema[prop]) {
throw new TypeError(属性 ${prop} 必须是 ${schema[prop]});
}
obj[prop] = value;
console.log(已设置 ${prop} = ${value});
return true;
}
});
}
const person = createValidator({});
person.name = 'Alice'; // 正常
person.age = 'young'; // 抛出 TypeError