/ ECMAScript6

ECMAScript6 之 Reflect

标签: ECMAScript 6 javaScript

简述

Reflect 意味着反射,从字面意思上就可以理解为是语言层面上的内容,在 ES6 中其出现的目的主要有以下几个

  • Object 下属于语言内部的方法,放到 Reflect 上,并且未来新方法只在 Reflect 上部署。
  • 使得方法的返回更加合理,解决之前在 Object 下的一些方法的返回值不合理照成的逻辑混乱。
  • 让命令式的行为变成函数行为,如: name in obj ==> Reflect.has(obj, name)
  • Proxy 下的方法一一对应,这样就能让 Proxy 对象可以更方便的完成默认行为的调用。

拥有的方法

目前一共有 13 个方法,与 Proxy 下的方法一一对应。

  • Reflect.apply(target, thisArg, args)
  • 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)
  • Reflect.getPrototypeOf(target)
  • Reflect.setPrototypeOf(target, prototype)

其作用与 Proxy 中的差不多,只不过一个进行拦截,一个进行操作。

具体的行为可以查看阮老师的 Reflect 中的内容。

注: 上面的例子大多数来自《ECMAScript 6入门》这本书。