Well, I had forgotten about this question, but someone recently upvoted it. Even though you technically can’t extend a proxy, there is a way to force a class to instantiate as a proxy and force all its subclasses to instantiate as proxies with the same property descriptor functions (I’ve only tested this in Chrome):
class ExtendableProxy {
constructor() {
return new Proxy(this, {
set: (object, key, value, proxy) => {
object[key] = value;
console.log('PROXY SET');
return true;
}
});
}
}
class ChildProxyClass extends ExtendableProxy {}
let myProxy = new ChildProxyClass();
// Should set myProxy.a to 3 and print 'PROXY SET' to the console:
myProxy.a = 3;