前置笔记:
Proxy 对象用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)。
JS高级程序设计的解释更容易理解一些:
代理是对目标对象的抽象,尝试理解为c++的指针。因为他可以作用于目标对象的替身,但是又完全独立于目标对象。目标对象既可以被直接操作,也可以通过代理对象来操作。但是直接操作会绕过代理施予的行为。
简单理解:JOJO知道吧,白金之星知道吧。
默认情况下,所有对代理对象的操作,都会被反映到原对象上。
参数:1. 目标对象 2. 处理程序对象(捕获器trap的函数)
简答理解:trap 陷阱函数,改造完再给你放出来。
target
要使用
Proxy
包装的目标对象(可以是任何类型的对象,包括原生数组,函数,甚至另一个代理)。
handler
一个通常以函数作为属性的对象,各属性中的函数分别定义了在执行各种操作时代理
p
的行为。
说说Reflect:反射机制指的是程序在运行时能够获取自身的信息。例如一个对象能够在运行时知道自己有哪些方法和属性。
使用反射的原因:只有在运行时,才知道具体的参数是什么。看代码