Reflect
创始人
2025-05-29 02:29:27

目录

一、设计目的

二、静态方法

三、proxy实现观察者模式


ES6 为了操作对象而提供的新 API

一、设计目的

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

二、静态方法

  • Reflect.apply(target, thisArg, args):用于绑定this对象后执行给定函数,等同于Function.prototype.apply.call(func, thisArg, args)。
  • Reflect.construct(target, args):等同于new target(...args),这提供了一种不使用new,来调用构造函数的方法。
  • Reflect.get(target, name, receiver):查找并返回target对象的name属性,如果没有该属性,则返回undefined
  • Reflect.set(target, name, value, receiver):设置target对象的name属性等于value
  • Reflect.defineProperty(target, name, desc):为对象定义属性,基本等同于Object.defineProperty。这个方法可以与Proxy.defineProperty配合使用,Proxy.defineProperty对属性赋值设置了拦截,然后使用Reflect.defineProperty完成了赋值
  • Reflect.deleteProperty(target, name):等同于delete obj[name],用于删除对象的属性。返回一个布尔值。如果删除成功,或者被删除的属性不存在,返回true;删除失败,被删除的属性依然存在,返回false
  • Reflect.has(target, name):对应name in obj里面的in运算符
  • Reflect.ownKeys(target):用于返回对象的所有属性,基本等同于Object.getOwnPropertyNamesObject.getOwnPropertySymbols之和
  • Reflect.isExtensible(target):返回一个布尔值,表示当前对象是否可扩展,对应Object.isExtensible
  • Reflect.preventExtensions(target):用于让一个对象变为不可扩展。它返回一个布尔值,表示是否操作成功。对应Object.preventExtensions
  • Reflect.getOwnPropertyDescriptor(target, name):用于得到指定属性的描述对象,基本等同于Object.getOwnPropertyDescriptor
  • Reflect.getPrototypeOf(target):用于读取对象的__proto__属性,对应Object.getPrototypeOf(obj)
  • Reflect.setPrototypeOf(target, prototype):用于设置目标对象的原型(prototype),对应Object.setPrototypeOf(obj, newProto)方法

Reflect - ECMAScript 6入门 (ruanyifeng.com)

三、proxy实现观察者模式

见=》JavaScript手写题_Kw_Chng的博客-CSDN博客

相关内容

热门资讯

美股收盘:三大指数集体收涨 纳... 财联社12月20日讯(编辑 夏军雄)美东时间周五,在甲骨文和英伟达走强的带动下,人工智能(AI)概念...
贵阳有轨电车T2线主体硬件基本... 转自:贵州日报 本报讯(记者 冷赛楠)近日,“天眼问政”栏目收到网友留言:贵阳有轨电车T2线从比亚迪...
大山“用水三变” 转自:贵州日报 “以前靠山上小水源灌田,纯靠天吃饭。现在水龙头就在边上,要浇地直接打开就行。”69岁...
危房抢险施工公告 转自:贵州日报 贵阳市云岩区鸿雁巷17、19、20号及弯弓街6号住户:为消除贵阳市云岩区鸿雁巷17、...
“请3休8”带旺元旦假期云南旅...   本报讯 首席记者李思凡报道 “请3休8”带旺元旦游。12月19日,飞猪发布的数据显示,2026年...