📅  最后修改于: 2023-12-03 15:16:06.675000             🧑  作者: Mango
Reflect 是 ECMAScript 6 引入的新的全局对象,包含了一系列静态方法,用于拦截和修改 JavaScript 操作。
该方法调用一个方法,传入给这个方法的参数是一个数组(或类数组对象)。第一个参数是要调用的函数本身,第二个参数是this值,第三个参数是要传入函数的参数。
Reflect.apply(target, thisArg, argumentsList)
target
:调用函数。thisArg
:函数调用时的this值。argumentsList
:传递给函数的参数数组。该方法创建一个由指定构造函数创建的新实例对象。传入给该函数的参数是一个数组(或类数组对象)。 第一个参数是要创建的构造函数本身,第二个参数是要传入构造函数的参数。如果有第三个参数,则将其视为 new 运算符的 new.target。
Reflect.construct(target, argumentsList[, newTarget])
target
:将用作构造函数的函数。argumentsList
:传递给构造函数的参数。newTarget
:该参数是新运算符的目标。如果未提供,则将构造函数用作其目标。该方法可以配置一个对象的属性。相当于 Object.defineProperty(obj, prop, descriptor) 方法。
Reflect.defineProperty(target, propertyKey, attributes)
target
:要设置属性的对象。propertyKey
:要设置的属性名称。attributes
:属性描述符对象。该方法删除一个对象的属性。相当于 delete obj[prop]。
Reflect.deleteProperty(target, propertyKey)
target
:要删除属性的对象。propertyKey
:要删除的属性名称。该方法获取一个对象的某个属性值。就像使用 obj[prop] 获取一样。
Reflect.get(target, propertyKey[, receiver])
target
:要获取属性的对象。propertyKey
:要获取的属性名称。receiver
:如果提供,则作为this值。该方法返回一个对象的属性描述符。就像使用 Object.getOwnPropertyDescriptor(obj, prop) 一样。
Reflect.getOwnPropertyDescriptor(target, propertyKey)
target
:要获取属性描述的对象。propertyKey
:要获取描述符的属性的名称。该方法返回一个对象的原型。就像使用 Object.getPrototypeOf(obj) 一样。
Reflect.getPrototypeOf(target)
target
:要获取原型的对象。该方法判断一个对象是否存在某个属性。就像使用 prop in obj 一样。
Reflect.has(target, propertyKey)
target
:要判断是否存在属性的对象。propertyKey
:要判断是否存在的属性名称。该方法判断一个对象是否可扩展。就像使用 Object.isExtensible(obj) 一样。
Reflect.isExtensible(target)
target
:要判断是否可扩展的对象。该方法返回一个对象的所有自身属性的属性名数组。就像使用 Object.getOwnPropertyNames(obj) 和 Object.getOwnPropertySymbols(obj) 一样。
Reflect.ownKeys(target)
target
:要获取属性名称的对象。该方法将一个对象变为不可扩展状态。就像使用 Object.preventExtensions(obj) 一样。
Reflect.preventExtensions(target)
target
:要变为不可扩展的对象。该方法将一个对象的属性设置为指定值。就像使用 obj[prop] = value 一样。
Reflect.set(target, propertyKey, value[, receiver])
target
:要设置属性的对象。propertyKey
:要设置的属性名称。value
:要设置的属性值。receiver
:如果提供,则作为this值。该方法设置一个对象的原型。就像使用 Object.setPrototypeOf(obj, proto) 一样。
Reflect.setPrototypeOf(target, proto)
target
:要设置原型的对象。proto
:要为对象设置的原型对象。除了上述的静态方法之外,Reflect 还暴露了一些实例方法。
该方法将一个键值对数组转换为对象。就像使用 Object.fromEntries(entries) 一样。
Reflect.fromEntries(entries)
entries
:一个键值对数组。Reflect 提供了一系列静态方法和实例方法,用于拦截和修改 JavaScript 操作。这些方法可以帮助我们更好地控制代码的执行流程,提升代码的性能和可读性。