在 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


猜你喜欢

  • Redux 异步操作中传递回调函数,是否是良好实践?

    在 Redux 中,异步行为(例如通过网络请求数据)通常使用 Redux Thunk 或 Redux-Saga 等中间件来处理。这些中间件允许我们编写具有副作用的代码并返回一个函数,而不是只返回一个简...

    6 年前
  • jQuery表单提交时如何将布尔复选框转换为"on"和"off"?

    在使用jQuery提交表单时,我们可能会遇到一个问题:当表单中存在布尔类型的复选框元素时,它们的值会被自动转换为"on"或"off",而不是true或false。这种行为可能会导致前端与后端之间的数据...

    6 年前
  • Creating Rooms in Socket.io

    在实时应用程序中,Socket.io 是一个经典的选择,它提供了一个轻量级和易于使用的实时通信机制。该库可以帮助开发人员构建具有高度交互性的应用程序,例如聊天应用程序、多人游戏等。

    6 年前
  • 动态调整图片地图和图片大小

    在前端开发中,我们经常需要使用图片地图或者图片来实现一些交互功能。但是,在不同的设备上,图片地图或者图片可能会显示不同的大小,这就需要我们动态地调整它们的大小。本文将介绍如何使用 HTML、CSS 和...

    6 年前
  • $(document).scroll 只在 IE8 中无法触发的解决方案

    当我们在开发 Web 前端时,经常需要使用到 $(document).scroll() 方法来监听页面滚动事件。然而,有时候这个方法在某些浏览器中可能无法被正确地触发。

    6 年前
  • 如何在 Chart.js 的饼图中添加标签

    Chart.js 是一款流行的 JavaScript 数据可视化库,它提供了许多强大的功能,包括绘制饼图。在这篇文章中,我们将探讨如何为 Chart.js 饼图添加标签。

    6 年前
  • 在jQuery中查找指定表单的提交按钮

    在前端开发中,我们经常需要通过jQuery来处理表单元素。有时候,我们需要在一个特定的表单中找到提交按钮,以便绑定事件、禁用按钮等操作。本文将介绍如何使用jQuery在特定表单中查找提交按钮。

    6 年前
  • 正则表达式:将单引号替换为两个单引号

    在前端开发中,我们经常需要处理字符串。有时候我们需要把一个字符串中的单引号替换为两个单引号,这是因为在一些 SQL 语句或者 HTML 属性值等中,单引号的使用是有限制的。

    6 年前
  • 在前端中,调用 setTimeout 函数时使用负数延迟值是否可行?

    什么是 setTimeout 函数? 在前端开发中,我们经常需要实现一些定时任务。setTimeout 函数就是用来将一个函数推迟到指定的时间再执行。 setTimeout 函数接受两个参数:要执行的...

    6 年前
  • jQuery: 查找具有自定义属性的元素

    在前端开发中,经常需要使用 jQuery 来操作 DOM 元素。有时候我们需要查找具有特定自定义属性的元素,这篇文章就介绍如何使用 jQuery 实现这一功能。 什么是自定义属性? HTML 标签可以...

    6 年前
  • AngularJS 中的货币格式化:在欧元符号后显示

    在AngularJS中,我们可以使用内置的currency过滤器轻松地将数字转换为货币格式。但是默认情况下,该过滤器在货币符号之前显示金额。如果您需要在欧元符号后面显示金额,可以通过以下步骤实现: 第...

    6 年前
  • 如何将x,y坐标转换为角度?

    在前端开发中,我们经常需要处理坐标和角度的转换,特别是在绘制图形或动画时。本文将介绍如何将直角坐标系中的x和y坐标值转换为极坐标系下的角度。 前置知识 在了解如何进行坐标和角度转换之前,我们需要先掌握...

    6 年前
  • ImmutableJS Map() 和 fromJS() 的区别

    在前端开发中,使用 ImmutableJS 可以方便地处理复杂数据结构,提高性能和代码可读性。其中,Map() 和 fromJS() 是 ImmutableJS 提供的两种不同的数据类型处理方式,但许...

    6 年前
  • 如何检查图片的 src 是否存在 - see if src of img exists

    在前端开发中,常常需要使用图片来展示内容。但是,有时候我们并不确定图片的链接是否有效,如果直接使用这样的链接,会造成页面加载缓慢或者显示错误的情况。因此,在使用图片之前,我们应该先对图片链接进行检查,...

    6 年前
  • 在前端中检测iPad的方向变化

    当用户在 iPad 上旋转设备时,可能需要调整您的 Web 应用程序的布局和视觉效果。为了实现这样的调整,您需要检测 iPad 的方向变化。本文将介绍如何在前端代码中实现这一功能。

    6 年前
  • 用 jQuery 根据索引获取表格数据(td)

    在 Web 开发中,我们经常会使用表格来展示和处理数据。当需要获取表格的某一列或某一行时,我们可以通过 jQuery 来实现。 获取指定行的数据 要获取表格中的某一行数据,我们可以使用 eq() 方法...

    6 年前
  • 50 === 50: false. 50 == 50: true?

    在前端开发中,我们经常会用到比较操作符,如==和===。但是,这两种操作符之间有什么区别呢?在本文中,我们将探讨这个问题,并提供一些示例代码来加深对这个主题的理解。

    6 年前
  • 在 JavaScript 类中使用“this”关键字的setTimeout()方法

    在编写 JavaScript 类时,我们经常需要使用setTimeout()方法来延迟执行某些代码。然而,在类中使用setTimeout()方法可能会导致this关键字的上下文出现问题。

    6 年前
  • 获取 Span 文本值的方法

    在前端开发中,我们经常需要获取页面上某个元素的文本内容。对于 span 元素来说,获取其文本值是一个很基础的操作。本文将介绍如何使用 JavaScript 获取 span 元素的文本值,并提供一些示例...

    6 年前
  • 使用jQuery创建Canvas元素并设置其宽度和高度属性

    简介 在前端开发中,Canvas是一个非常有用的HTML5元素,允许您以编程方式绘制图形和动画。在本文中,我们将介绍如何使用jQuery创建Canvas元素,并设置其宽度和高度属性。

    6 年前

相关推荐

    暂无文章