在 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
类,其中的 constructor
和 greet
方法都使用了 this-as
宏来访问当前对象。
指导意义
正确地访问 this
对于编写优秀的 Clojurescript 代码非常重要。使用 this-as
宏可以帮助你避免一些常见的错误,并使你的代码更加清晰和易于维护。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/30737