ECMAScript 2017(ES8):使用 Proxy 实现 JavaScript 中的 “隐藏属性”

随着 JavaScript 的发展和应用场景的增加,程序员们对于 JavaScript 的需求日益增加。在 ECMAScript 2017 (ES8)中,JavaScript 引入了 Proxy 对象,可以方便地在对象上定义自定义行为。

Proxy 对象是 ECMAScript 6 引入的新特性,它允许程序员在实例化对象时重写默认操作。这意味着我们可以在对象上定义一系列自定义行为,而不是仅仅依赖于预定义的方法。

在这篇文章中,我们将详细探讨 Proxy 对象的使用,以及如何使用它来实现 JavaScript 中的隐藏属性。

什么是 Proxy 对象?

Proxy 对象是 JavaScript 中用于定义特定对象行为的包装器对象。它允许程序员重写对象的默认操作,并在重写它们时生成自定义行为。

Proxy 对象的行为基于一个称为“捕获器”的对象,该对象定义可以被重写的默认操作。所有的 Proxy 对象都接受一个目标对象作为其第一个参数,并应用捕获器的行为来每个对象方法调用。

隐藏属性

在 JavaScript 中,我们有时需要将对象的属性隐藏起来,以保护它们不被不当访问。通常,我们会在这些属性前面添加一个下划线,来暗示这些属性不应该被直接访问。

然而,这一方法不是十分安全,因为人们可以轻易地通过读取运行时对象属性的方式来访问这些属性。这是一种违背封装原则的行为,因为隐藏的属性应该只能通过对象方法访问。

使用 Proxy 对象,我们可以实现 JavaScript 中的隐藏属性。实现方法是,我们可以设置一个捕获器,拦截每次对对象的属性调用。如果属性被访问,Proxy 对象会进行特定的行为。

使用 Proxy 对象来隐藏属性

在这个示例中,我们将创建一个 Proxy 对象,用于隐藏属性。我们将使用一个名为“hidingProxy”的对象来存储隐藏的属性。

----- ----------- - --- --------- -
  ---- -------- --------- -- -
    -- ------------ --- ---- -
      ----- --- -------------- ------ -- ------- --------- --------------
    - ---- -
      ------ -----------------
    -
  --
  ---- -------- --------- ------ -- -
    -- ------------ --- ---- -
      ----- --- -------------- ----- -- ------- --------- --------------
    - ---- -
      ---------------- - ------
      ------ -----
    -
  --
  ---- -------- --------- -- -
    ------ ----------- --- ----
  -
---

在这里,我们使用 Proxy 对象并在定义的捕捉器中,只允许访问没有下划线的属性。如果访问到带下划线的属性,则抛出异常。

同样地,我们只允许设置没有下划线的属性。如果设置了带下划线的属性,则会抛出异常。

在使用这个对象之前,我们可以定义现有属性,以及使用新的属性。

-------------- - --
---------------- - ----- -----
--------------------- - ---------

---------------------------- -- ----
------------------------------ -- ------- ---
----------------------------------- -- --------- ------- ------ -- ------- --------- ---------

在这种情况下,我们不能够访问隐藏的属性,因为在捕获器中,我们拒绝了所有以“_”开头的属性。

同样地,我们在调用属性时也无法设置属性值。

-------------- - --
--------------------- - ---------------

---------------------------- -- ----
----------------------------------- -- --------- ------- ----- -- ------- --------- ---------

可以看出,Proxy 对象为 JavaScript 中的隐藏属性提供了一种完全封装的方法,可以使对象的属性受到保护,并仅能通过对象上的方法进行访问。

总结

Proxy 对象是 ECMAScript 2017(ES8)中引入的一个新对象,用于深入定制 JavaScript 对象的行为,并进行自定义行为。在本文中,我们使用 Proxy 对象来实现 JavaScript 中的隐藏属性,该方法将对象属性完全封装起来,只能通过对象方法访问。这种方法不仅遵循封装原则,还能使程序员编写更可靠的代码。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6521104e95b1f8cacd88410e


猜你喜欢

相关推荐

    暂无文章