JavaScript中this关键字的用法详解

键盘旁的猫
键盘旁的猫
发布时间:2026-10-15| 5人浏览过
原创

在 JavaScript 开发中,this 关键字的行为取决于其所在的作用域和执行上下文。理解 this 在全局环境、事件处理以及构造函数中的不同指向,是掌握 JS 面向对象编程的关键。

全局环境中的 this

在非严格模式的全局执行上下文中,this 始终指向全局对象。在浏览器环境中,全局对象即为 window。

可以通过以下代码验证这一行为:

alert(this); // 显示 [object Window]
alert(this === window); // 显示 true

事件处理中的 this

当 this 出现在 DOM 元素的事件处理函数中时,它通常指向当前触发该事件的 DOM 元素节点。这适用于 HTML 内联属性绑定或 JS 标准事件监听绑定的情况。

第1步:HTML 内联绑定

目的:演示直接在 HTML 标签中使用 onclick 属性时 this 的指向。

操作与参数:

  • 创建一个按钮元素,使用内联属性绑定事件。
  • 代码示例:
<input type="button" value="点击这里显示this" onclick="alert(this)" />

结果:点击按钮后,弹出框显示 [object HTMLInputElement],证实 this 指向该输入控件本身。

第2步:JS 代码绑定

目的:演示通过 JavaScript 获取 DOM 元素并赋值事件回调时 this 的指向。

操作与参数:

  • 定义一个带有 id 的按钮,并通过 document.getElementById 获取引用。
  • 将匿名函数赋值给元素的 onclick 属性。
  • 代码示例:
<input id="demo" type="button" value="点击这里显示this" />
<script type="text/javascript">
document.getElementById("demo").onclick = function(){
    alert(this); // 显示 [object HTMLInputElement]
}
</script>

结果:点击按钮后,this 同样指向该按钮元素节点。

构造函数中的 this

在使用 new 关键字调用构造函数创建对象实例时,this 指向新创建的对象实例。此时,this 属性被挂载到该实例上,实现了数据的隔离与方法的重用。

以下示例展示了如何在一个构造函数中利用 this 定义公共属性与方法:

var user = "xiaoming"; // 全局变量

function ItXueyuan(user){
    this.name = "IT学院";
    this.domain = "www.itxueyuan.org";
    this.user = user; // 实例属性,遮蔽同名全局变量
    
    this.showUser = function(){
        alert(this.user);
    }
}

// 创建第一个实例
var zhangsan = new ItXueyuan("zhangsan");
zhangsan.showUser(); // 输出 "zhangsan"

// 创建第二个实例
var wangming = new ItXueyuan("wangming");
wangming.showUser(); // 输出 "wangming"  

在上述逻辑中,ItXueyuan 每次被执行时,内部的 this 都会绑定到刚创建的 zhangsan 或 wangming 对象上,确保各自拥有独立的 user 状态。

以上就是 JavaScript this 关键字的详细用法总结,更多关于 JavaScript 前端基础知识的内容请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。