”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > “this”在 JavaScript 类方法中的行为如何?

“this”在 JavaScript 类方法中的行为如何?

发布于2024-12-22
浏览:428

How Does

理解 JavaScript 中类方法中“this”的行为

在 JavaScript 中,“this”的概念对于理解方法在类定义中的操作方式至关重要。为了深入研究这个主题,我们来分析一下“this”指的是调用者类而不是调用类方法时创建的对象的语句。

调用模式和“this”绑定

中JavaScript,有四种不同的方法来调用函数,每种方法都决定了“this”的绑定方式:

  1. 方法调用: 当函数作为对象的方法调用时,“this”绑定到该对象。
  2. 函数调用: 在独立函数调用中,“this” " 绑定到全局对象(通常是浏览器中的“window”对象)。
  3. 构造函数调用: 函数使用“new”关键字调用被视为构造函数调用。在本例中,“this”绑定到一个新创建的对象。

理解您的示例

在您的代码示例中,您提到了类定义中创建多个对象的方法使用对象文字表示法。在这些对象中,使用了“this”指针。您观察到的行为可能源于 onRender 方法的调用模式。

如果您的 onRender 方法作为类实例的方法调用(方法调用),则“this”将引用该类实例,如下所示是期望的行为。但是,如果 onRender 无意中作为类实例上下文之外的函数(函数调用)被调用,则“this”将绑定到全局对象而不是预期的类实例。这可能会导致意外的行为。

“this”行为的原因

“this”与调用者对象或函数的绑定是 JavaScript 设计的一个基本方面。它允许创建动态且灵活的代码,其中可以根据调用模式操纵“this”的上下文。

结论

类方法中“this”的行为是JavaScript 函数调用模式的结果。通过了解“this”在各种场景中的绑定方式,您可以控制代码运行的上下文并避免潜在的混乱。

最新教程 更多>
  • 如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    在 PHP 中组合关联数组在 PHP 中,将两个关联数组组合成一个数组是一项常见任务。考虑以下请求:问题描述:提供的代码定义了两个关联数组,$array1 和 $array2。目标是创建一个新数组 $array3,它合并两个数组中的所有键值对。 此外,提供的数组具有唯一的 ID,而名称可能重合。要求...
    编程 发布于2024-12-22
  • Tailwind v 中令人兴奋的更新
    Tailwind v 中令人兴奋的更新
    几个月前(撰写本文时),Tailwind CSS 开源了其在 Tailwind CSS v4.0 上的工作。 (您可以在 GitHub 上找到它)。 最近,Tailwind 宣布了 Tailwind CSS 4 的公开 beta,在本文中我将介绍新版本的亮点。那么让我们开始吧! 一般...
    编程 发布于2024-12-22
  • 为什么我的 JavaScript 模板文字不工作?
    为什么我的 JavaScript 模板文字不工作?
    JavaScript 模板文字不起作用当尝试使用 JavaScript 模板文字(例如 some ${string} 或“some ${string}”)时,用户可能会遇到问题其中显示文字变量名称而不是它们的值。这个问题并不限于特定的浏览器版本或像 jQuery 这样的开发框架。解决方案:使用反引号...
    编程 发布于2024-12-22
  • 大批
    大批
    方法是可以在对象上调用的 fns 数组是对象,因此它们在 JS 中也有方法。 slice(begin):将数组的一部分提取到新数组中,而不改变原始数组。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index p...
    编程 发布于2024-12-22
  • Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta:列偏移的删除和恢复Bootstrap 4 在其 Beta 1 版本中引入了重大更改柱子偏移了。然而,随着 Beta 2 的后续发布,这些变化已经逆转。从 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    编程 发布于2024-12-22
  • Python 3 中的字符串到字节:“bytes()”或“.encode()”——哪个更 Pythonic?
    Python 3 中的字符串到字节:“bytes()”或“.encode()”——哪个更 Pythonic?
    Python中从字符串转换为字节3:哪种方法更Pythonic?处理二进制数据时,需要将字符串转换为字节以进行高效操作。 Python 3 为该任务提供了两种主要方法:b = bytes(mystring, 'utf-8') b = mystring.encode('utf-8')方法选择:根据Py...
    编程 发布于2024-12-22
  • Go time.Time:`time.Nil` 和 `time.IsZero()` 有什么区别?
    Go time.Time:`time.Nil` 和 `time.IsZero()` 有什么区别?
    Go 中 time.Nil 和 time.IsZero() 的区别理解 time 的零值。Go 中的 Time 至关重要当使用日期和时间时。在错误处理中,尝试为 time.Time 返回 nil 会导致类型不匹配错误。time.Time 的零值与 Go 中的其他类型不同,其中 nil代表零值,tim...
    编程 发布于2024-12-22
  • HTML 格式标签
    HTML 格式标签
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    编程 发布于2024-12-22
  • 如何防止文本中连字符后出现换行符?
    如何防止文本中连字符后出现换行符?
    防止连字符后换行处理包含连字符的文本时,您可能会遇到连字符后出现换行的问题,造成不良的视觉效果。在处理连字符测量值或其他应作为一个单词放在一起的元素时,此问题尤其明显。在 Safari 等浏览器中,由于无法识别零宽度无中断字符,可能会出现此问题() 防止换行时。为了解决这种情况,跨浏...
    编程 发布于2024-12-22
  • 如何从 C++ 函数返回数组?
    如何从 C++ 函数返回数组?
    从 C 中的函数返回数组 您可以使用指针从 C 中的函数返回数组。但是,如果数组未正确分配,这可能会导致问题。在您的示例中,您试图返回在堆栈上分配的数组。这可能会在函数返回时导致未定义的行为。要避免此问题,您可以使用 new 运算符在堆上分配数组。然后,您可以返回指向已分配数组的指针。int* un...
    编程 发布于2024-12-22
  • 如何使用“mysql”和“sed”将所有 MySQL 表批量导出到 CSV 文件?
    如何使用“mysql”和“sed”将所有 MySQL 表批量导出到 CSV 文件?
    使用“mysqldump”批量导出 CSV在 MySQL 数据管理领域,将表内容导出为 CSV 格式可能是一项至关重要的任务。虽然“mysqldump”是一个强大的数据库备份实用程序,但它缺少将每个表专门导出为 CSV 的选项。本文探索了一种结合“mysql”和后处理来实现此目的的替代方法。“mys...
    编程 发布于2024-12-22
  • 如何在MySQL中正确转义撇号:反斜杠或双撇号?
    如何在MySQL中正确转义撇号:反斜杠或双撇号?
    在 MySQL 中转义撇号:了解选项在 MySQL 中,通常认为撇号(单引号)可以是使用反斜杠字符 () 进行转义。然而,使用双撇号 ('') 代替转义序列似乎也有效,这引起了一些混乱。根据 MySQL 文档,这两种方法都是有效且可以互换的。具体来说,文档指出,“用 ' 引用...
    编程 发布于2024-12-22
  • PHP 设计模式:页面控制器
    PHP 设计模式:页面控制器
    页面控制器设计模式是基于 Web 的系统中使用的常见架构方法。它通过专用特定控制器来处理单个页面或请求的逻辑来组织控制流。这种方法有助于隔离职责,使代码库更易于维护和发展。 什么是页面控制器? 在页面控制器模式中,每个页面(或一组具有相似行为的页面)都有自己的控制器,负责: 处理请求...
    编程 发布于2024-12-22
  • 尽管代码有效,为什么 POST 请求无法捕获 PHP 中的输入?
    尽管代码有效,为什么 POST 请求无法捕获 PHP 中的输入?
    解决 PHP 中的 POST 请求故障在提供的代码片段中:action=''而不是:action="<?php echo $_SERVER['PHP_SELF'];?>";?>"检查 $_POST数组:表单提交后使用 var_dump 检查 $_POST 数...
    编程 发布于2024-12-22
  • 日日理解 Python 中的字符串 |  天蟒
    日日理解 Python 中的字符串 | 天蟒
    第 8 天:Python 中的用户输入 | 100 天 Python 在 Python 中,字符串作为一种数据类型发挥着至关重要的作用,它允许您处理文本数据。在本博客中,我们将探讨字符串的基础知识、创建字符串的不同方法以及多行字符串、索引和循环字符串中的字符等高级概念。本指南将使您对字符串有深入的了...
    编程 发布于2024-12-22

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3