JS进阶4 -- 代理
在 JS进阶3 – 深拷贝和浅拷贝中我们学习了深拷贝和浅拷贝的实现方法,本文将继续重点跟大家介绍JS中的第4个重点内容 – 代理,主要包括代理的使用方法和优点分析。废话不多说,一起来看看吧!
4-代理
- proxy(代理):提供了修改底层实现的方式
- 使用方法:
- var p = new Proxy(target, handler);
- target: 目标对象
- handler: 普通对象,用于定义处理target的业务逻辑
- var p = new Proxy(target, handler);
- 优点:对象只需关注于核心逻辑,一些非核心的逻辑(如:读取或设置对象的某些属性前记录日志;设置对象的某些属性值前,需要验证;某些属性的访问控制等)可以让Proxy来做。从而达到关注点分离,降低对象复杂度的目的。
var obj = {a: 1, b: 2};
var handler = {
// 代理set、get、has方法
set: function(target, key, value) {
console.log('这里设置了属性');
target[key] = value;
},
get: function(target, key) {
console.log('这里获取了属性');
return target[key];
},
has: function(target, key) {
return key in target;
}
};
var p = new Proxy(obj, handler);
p.a = 20;
console.log(obj, p.a); // {a: 20, b: 2} 20
console.log("c" in p); // false