在 Clojurescript 中访问 "this"

在 Clojurescript 中,访问 this 可能是一个令人困惑的问题。本文将介绍如何正确地访问 this,并提供一些示例代码和指导意义。

什么是 Clojurescript?

Clojurescript 是一种 Lisp 方言,用于编写跨浏览器应用程序。它是 Clojure 的 JavaScript 实现,并与 React、React Native 和 Electron 等框架和库紧密集成。

访问 "this" 的问题

在 JavaScript 中,this 是一个关键字,用于引用当前对象。但在 Clojurescript 中,this 不是关键字,而是一个普通的参数。这就带来了访问 this 的问题。

例如,考虑以下代码:

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

如果你尝试像这样调用 my-fn

-------

你会看到以下输出:

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

这是因为 this 被自动设置为全局对象(在浏览器中通常是 window)。

解决方案:使用 this-as

为了访问当前对象,你需要使用 this-as 宏。这个宏会把 this 绑定到一个指定的名称上,并允许你在函数内部引用它。

例如,以下代码将 this 绑定到 self 上:

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

现在,如果你调用 my-fn,你将看到以下输出:

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

这是因为 this 被设置为当前对象。

示例代码

以下示例演示了如何使用 this-as 宏访问当前对象。它定义了一个叫做 Person 的 Clojurescript 类,并在其中使用 this-as 宏:

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

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

这个示例定义了一个 Person 类,其中的 constructorgreet 方法都使用了 this-as 宏来访问当前对象。

指导意义

正确地访问 this 对于编写优秀的 Clojurescript 代码非常重要。使用 this-as 宏可以帮助你避免一些常见的错误,并使你的代码更加清晰和易于维护。

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