Proxy
在你封装框架时会用到Proxy,平常几乎用不到。proxy在目标对象的外层搭建了一层拦截,外界对目标对象的某些操作,必须通过这层拦截。
var proxy = new Proxy(target, handler);
new Proxy()表示生成一个Proxy实例,target参数表示所要拦截的目标对象,handler参数也是一个对象,用来定制拦截行为。
对于代理模式 Proxy 的作用主要体现在三个方面:
1.拦截和监视外部对对象的访问
2 .降低函数或类的复杂度
3 .在复杂操作前对操作进行校验或对所需资源进行管理
Reflect
1、什么是Reflect?
为操作对象而提供的新API.
2、为什么要设计Reflect?
(1)将Object对象的属于语言内部的方法放到Reflect对象上,即从Reflect对象上拿Object对象内部方法。
(2)将用 老Object方法 报错的情况,改为返回false
老写法
新写法
(3)让Object操作变成函数行为
老写法(命令式写法)
‘name’ in Object //true
新写法
Reflect.has(Object,‘name’) //true
(4)Reflect与Proxy是相辅相成的,在Proxy上有的方法,在Reflect就一定有
确保对象的属性能正确赋值,广义上讲,即确保对象的原生行为能够正常进行,这就是Reflect的作用.