Reflect是什么?
Reflect 是一个内置的 JavaScript 对象,提供了一组静态方法,这些方法对应于一些操作符,以及一些常见的操作。Reflect 对象的方法可以被用来获取对象属性、设置属性、调用函数、构造对象等。以下是一些 Reflect 对象常用的方法:
-
Reflect.get(target, propertyKey[, receiver]):返回指定属性的值。类似于直接访问属性的方式
target[propertyKey],但是提供了更灵活的方式,并且可以避免出现某些异常情况。 -
Reflect.set(target, propertyKey, value[, receiver]):设置指定属性的值。类似于直接赋值的方式
target[propertyKey] = value,但是具有更多的控制和处理能力。 -
Reflect.has(target, propertyKey):判断指定属性是否存在于对象中。
-
Reflect.deleteProperty(target, propertyKey):删除对象的指定属性。
-
Reflect.apply(func, thisArg, args):调用一个函数,可以传入指定的
this值和参数数组。 -
Reflect.construct(target, args[, newTarget]):以指定参数创建一个新对象,类似于
new操作符。 -
Reflect.defineProperty(target, propertyKey, attributes):定义一个新的属性或修改已有的属性的描述符。
-
Reflect.getOwnPropertyDescriptor(target, propertyKey):返回指定属性的属性描述符。
-
Reflect.getPrototypeOf(target):返回指定对象的原型。
Reflect 方法提供了一种更规范化和统一的方式来进行对象操作,使得代码更加清晰易懂,同时也更容易维护和扩展。在使用 Reflect 方法时,可以更好地区分操作成功与失败,并且更加灵活地处理各种操作。
最直观的就是项目中引入了ESlint/husky,当想判断obj中是否存在属性a,之前会这么写:obj.hasOwnProperty('a')。
结果就是Eslint/husky提示不允许访问原型链的属性/方法。
那么就可以使用Reflect.has(obj, 'a'),同时不会报错。

浙公网安备 33010602011771号