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