Proxy介绍:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy
直接上代码:
function createProxyClass(TargetClass, proxyHandler) {
const _constructor = TargetClass;
const TargetProxyClass = function (..._) {
let entity = new _constructor(..._);
let entityProxy = new Proxy(entity, proxyHandler);
return entityProxy;
};
return TargetProxyClass;
}
用法如下:
let handler = {
set: function (target, p, value) {
console.log("@")
target[p] = () => {
console.log("proxy");
}
return false;
}
}
class A {
a(){}
}
A = createProxyClass(A, handler);
var a = new A();
a.a = () => console.log("!"); // 对 a 方法进行修改,会进入 handler 的 set 方法
a.a(); // 这里会输出 proxy