基本概念
reflect是一个内置的对象,提供了拦截JavaScript操作的方法(主要作用)。它将部分属于语言内部的方法转移到reflect上去,比如defineProperty。优化了一部分函数的返回结果,它的风格上倾向于函数式编程,保留对象的默认行为(Proxy),没有构造函数,所有的属性方法都是静态的,类似Math。reflect和Proxy是一一对应的,所有Proxy可以拦截的属性,reflect提供一个默认。。
静态方法
- get ,取值操作, 不存在返回undefined
内部this绑定receiverReflect.get(target, propertyKey[, receiver]);
var object1 = { a: 1, b: 2, get c() { return this.a + this.b; }, }; var object2 = { a: 4, b: 4, }; Reflect.get(object1, 'c'); // 3 Reflect.get(object1, 'c', object2); // 8
- set,赋值操作
同get一样,也是内部this绑定receiver。Reflect.set(target, propertyKey, value[, receiver]);
var object1 = { a: 1, set b(value) { return this.a = value; }, }; var object2 = { a: 0