ES12 中的 Reference-able Exotic Objects 详解

在 ES12 中,Reference-able Exotic Objects 是一个新增的概念。这个概念可以让开发者更好的理解 JS 中的对象,并有助于提高代码的可读性和可维护性。

什么是 Reference-able Exotic Objects?

Reference-able Exotic Objects 是一种特殊类型的对象,它们提供了一些自定义的行为,使其能够像普通对象一样被引用和操作。与普通对象不同的是,它们没有常规的内置方法,而是通过一些自定义方法来实现对象的行为。

通俗来说,它们是一种复杂的对象类型,可以被 JS 引擎用来实现一些高级数据结构和具有复杂内部状态的对象。

Reference-able Exotic Objects 的特征

  1. 具有唯一的内部状态,无法通过普通的属性访问和修改;
  2. 可以像普通对象一样通过引用(Reference)进行传递和操作;
  3. 通过一些自定义方法来实现对象的行为;
  4. 不能被继承,也不能作为父类。

Reference-able Exotic Objects 的分类

在 ES12 中,Reference-able Exotic Objects 可以分为几类:

  1. Map Objects:ES6 引入的 Map 类型;
  2. Set Objects:ES6 引入的 Set 类型;
  3. WeakMap Objects:ES6 引入的 WeakMap 类型;
  4. WeakSet Objects:ES6 引入的 WeakSet 类型;
  5. ArrayBuffer Objects:提供一种底层的二进制数据存储方式;
  6. DataView Objects:提供一种跨字节访问 ArrayBuffer 数据的方式;
  7. TypedArray Objects:一组被设计用于协同工作的数据类型,共享 ArrayBuffer 作为它们的内部存储;
  8. Proxy Objects:为对象提供了动态代理的功能。

示例代码

下面是一个使用 Proxy 对象实现的简单事件处理程序的示例代码:

在上面这个例子中,我们创建了一个空的对象 events,然后使用 Proxy 对象为它提供了 get 方法用于捕获该对象的属性访问。当一个属性被访问时,我们通过检查该属性是否存在,然后为它添加一个空数组来创建一个新的事件。

我们使用一个类似事件的方式来关联钩子函数。在 createupdatedelete 方法被调用时,它们会自动将传入的参数执行,然后调用订阅该事件的所有处理程序。通过使用 Reference-able Exotic Objects,我们可以很容易地管理我们的事件的处理程序,并可以通过这种方式来实现高级的事件处理系统。

总结

Reference-able Exotic Objects 是 ES12 新增的一个概念,它们是一种自定义行为的对象类型,可以用于实现高级数据结构和具有复杂内部状态的对象。它们具有唯一的内部状态,可以像普通对象一样通过引用进行传递和操作,并且通过一些自定义方法来实现对象的行为。掌握它们的概念和分类,在编程中可以更加灵活地运用 JavaScript 对象。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6530bf2f7d4982a6eb24e719


纠错
反馈