Reflect
- 从 Reflect 对象上可以获得语言内部的方法
- 修改某些 Object 方法的返回结果,让其变得更合理。比如 Object.defineProperty 在无法定义属性时会抛出一个错误,而 Reflect.defineProperty 则会返回 false
- 让 Object 操作都变成函数行为。
- 只要是 Proxy 对象的方法,就能在 Reflect 对象上找到相应的方法,无论 Proxy 怎么修改默认行为,总可以在 Reflect 上获取默认行为
静态方法
Reflect.apply(target, thisArg, args)
等同于 Function.prototype.apply.call(func, thisArg, args),用于绑定 this 对象后执行给定函数。Reflect.construct(target, args)
等同于 new target(…args),提供了一种不使用 new 来调用构造函数的方法:1
2
3
4
5
6
7
8function Greeting(name) {
this.name = name
}
//new 的写法
const instance = new Greeting("张三")
//Reflect.construct 写法
const instance = Reflect.construct(Greeting, ["张三"])