Reflect对象的设计目的 1.将Object对象的一些明显属于语言内部的方法(比如Object.defineProperty),放到Reflect对象上。现阶段,某些方法同时在Object和Reflect对象上部署,未来的新方法将只部署在Reflect对象上。也就是说,从Reflect对象上可以拿到语言内部的方法。 2.修改某些Object方法的返回结果,让其变得更合理。 3.让Object操作都变成函数行为 4.Reflect对象的方法与Proxy对象的方法一一对应
Reflect 13 个静态方法
Reflect.get(target, name, receiver) 查找并返回target对象的name属性,receiver绑定this Reflect.set(target, name, value, receiver) 设置target对象的name属性等于value Reflect.has(obj, name) 方法对应name in obj里面的in运算符 Reflect.deleteProperty(obj, name) 方法等同于delete obj[name],用于删除对象的属性。 Reflect.construct(target, args) 等同于new target(...args),调用构造函数的方法。 Reflect.getPrototypeOf(obj) 读取对象的__proto__属性,对应Object.getPrototypeOf Reflect.setPrototypeOf(obj, newProto) 设置目标对象的原型 对应Object.setPrototypeOf Reflect.apply(func, thisArg, args) 等同于Function.prototype.apply.call(func, thisArg, args) Reflect.defineProperty(target, propertyKey, attributes) 等同于Object.defineProperty Reflect.getOwnPropertyDescriptor(target, propertyKey) 等同于Object.getOwnPropertyDescriptor Reflect.isExtensible (target) 对应Object.isExtensible 表示当前对象是否可扩展。 Reflect.preventExtensions(target) 对应Object.preventExtensions 让一个对象变为不可扩展 Reflect.ownKeys (target) 返回对象的所有属性,可以返回Symbol类型