Reflect

# Reflect

# 概述

  1. 将Object对象的一些明显属于语言内部的方法(比如Object.defineProperty),放到Reflect对象上
  2. 修改某些Object方法的返回结果,让其变得更合理
  3. 让Object操作都变成函数行为
  4. Reflect对象的方法与Proxy对象的方法一一对应,只要是Proxy对象的方法,就能在Reflect对象上找到对应的方法

# 静态方法

// 代理 this 指向
Reflect.apply(target, thisArg, args)

// 不使用new,来调用构造函数的方法
Reflect.construct(target, args)

// 获取属性
Reflect.get(target, name, receiver)

// 设置属性
Reflect.set(target, name, value, receiver)

// 对象定义属性
Reflect.defineProperty(target, name, desc)

// 删除对象的属性
Reflect.deleteProperty(target, name)

// 判断是否具有属性
Reflect.has(target, name)

// 返回对象的所有属性
Reflect.ownKeys(target)

// 返回一个布尔值,表示当前对象是否可扩展
Reflect.isExtensible(target)

// 让一个对象变为不可扩展
Reflect.preventExtensions(target)

// 得到指定属性的描述对象
Reflect.getOwnPropertyDescriptor(target, name)

// 读取对象的__proto__属性
Reflect.getPrototypeOf(target)

// 设置目标对象的原型(prototype) 返回一个布尔值,表示是否设置成功
Reflect.setPrototypeOf(target, prototype)