下面是一些 Reflect 的常见方法:
1. Reflect.get(target, propertyKey, [receiver]):
用于获取对象的属性值,类似于 target[propertyKey]。可以传递可选的 receiver 参数,用于绑定 this 值。
const obj = { name: 'John' };
console.log(Reflect.get(obj, 'name')); // 输出: John
2. Reflect.set(target, propertyKey, value, [receiver]):
用于设置对象的属性值,类似于 target[propertyKey] = value。也可以传递可选的 receiver 参数。
const obj = {};
Reflect.set(obj, 'name', 'John');
console.log(obj.name); // 输出: John
3. Reflect.has(target, propertyKey):
用于检查对象是否包含指定的属性,类似于 propertyKey in target。
const obj = { name: 'John' };
console.log(Reflect.has(obj, 'name')); // 输出: true
4. Reflect.deleteProperty(target, propertyKey):
用于删除对象的属性,类似于 delete target[propertyKey]。
const obj = { name: 'John' };
Reflect.deleteProperty(obj, 'name');
console.log(obj.name); // 输出: undefined
5. Reflect.construct(target, argumentsList [, newTarget]):
用于调用构造函数,相当于 new target(...argumentsList)。可选的 newTarget 参数允许指定构造函数。
function Person(name) {
this.name = name;
}
const obj = Reflect.construct(Person, ['John']);
console.log(obj.name); // 输出: John
Reflect 提供了一种更统一、一致的方式来执行对象的操作,与 Proxy 一同使用时,可以实现更强大的元编程能力。这两个功能结合起来,为 JavaScript 提供了灵活且强大的元编程工具。
转载请注明出处:http://www.zyzy.cn/article/detail/4675/ES6