JavaScript,Proxy作用于普通实例或者类时,有何不同?
发布于 作者:苏南大叔 来源:程序如此灵动~

需求是对某个实例化对象,使用Proxy
进行修改。然后犯的错误是:混淆了类定义和实例化变量的区别,忽略了new Proxy()
的handler
的多样性。得出的结论是:Proxy
的真正生效对象是具体的变量本身,而不是作用在定义规范它的类或函数。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的编程经验文章。测试环境:chrome@131.0.6778.70
,nodejs@20.18.0
。
前置阅读
为了更好的理解本文,可以先理解一下类和实例化变量的区别。参考下面的文章:
然后,基于上述文章的内容,继续对其进行修改。修改的内容是:利用Proxy()
,传入篡改其属性的handler
。有关Proxy
的内容,可以参考:
需求演示
本文的目标是,对类实例的某个属性进行更改。实例是通过类初始化的,作用结果是输出从sunan
变成"苏南"。参考代码:
移植到类定义【错误演示】
把Proxy()
作用到类定义的时候,原来的handler
就不能生效了。
Proxy曲线修改类【正确方案】
因为Proxy
作用的对象,是某个实例,并不是这种更加虚无的类定义。作用于类定义的时候,在初始化的时候,做了第二次的Proxy
,最终覆盖掉原实例。
结语
proxy
能作用于普通的变量,也可以作用于类定义。但是由于作用对象的实际属性不同,需求的实现的挂载点也是不同的。
本文也是为下一篇文章做铺垫的,所以,更多苏南大叔的相关经验文章,请参考:


