this指向

简介: 在 JavaScript 中,`this` 的指向有多种情况:全局作用域中指向全局对象(如浏览器中的 `window`),函数中默认也指向全局对象,但作为对象方法调用时则指向该对象。箭头函数中的 `this` 继承自定义时的作用域,不会改变。可通过 `call`、`apply` 或 `bind` 方法显式改变 `this` 指向。

在 JavaScript 中,this 关键字的指向可能有以下几种情况:

  1. 在全局作用域中,this 指向全局对象。在浏览器中,全局对象是 window,在 Node.js 中,全局对象是 global。
  2. 在函数中,默认情况下,this 指向全局对象。但是,如果将函数作为对象的方法调用,则 this 指向调用方法的对象。
  3. 在箭头函数中,this 的指向是定义时所在的作用域的 this。箭头函数没有自己的 this,因此它永远不会改变指向。
  4. 可以使用 call、apply 或 bind 方法显式地指定 this 的指向。

例如:

const obj = {
  name: 'John',
  greet: function() {
    console.log(`Hello, ${this.name}!`);
  }
};
obj.greet();  // Hello, John! 因为是obj调用的greet方法,所以greet方法内部的this指向的是obj
const greet = obj.greet;
greet();  // Hello, undefined!,因为greet()是通过window调用的,所以this指向window
const arrowGreet = () => {
  console.log(`Hello, ${this.name}!`);
};
arrowGreet();  // Hello, undefined! this指向window
const boundGreet = obj.greet.bind(obj);
boundGreet();  // Hello, John!  // this被bind修改为了obj,所以this指向了obj


怎么改变this指向

改变this指向的三种方法:call、apply、bind

相关文章
|
测试技术 计算机视觉 异构计算
【论文速递】ECCV2022 - ByteTrack:通过关联每个检测盒来进行多对象跟踪
【论文速递】ECCV2022 - ByteTrack:通过关联每个检测盒来进行多对象跟踪
淘宝图搜接口功能解析
淘宝图搜是基于图像识别的便捷购物工具,支持通过图片查找商品,省去手动输入关键词的麻烦。本文详解其功能、常见问题及解决方法,助你高效使用这一工具。
|
缓存 监控 前端开发
前端性能优化以及解决方案
前端性能优化关乎用户体验和网站竞争力,包括减少HTTP请求、使用CDN、压缩资源、延迟加载、利用浏览器缓存等策略。制定优化计划,使用监控工具,遵循最佳实践并持续学习,能提升网站速度和稳定性。
618 0
|
人工智能 安全 开发者
2025 年 WordPress 本地部署工具深度测评:3 大高效实践方案解析
随着 WordPress 6.4 的普及,本地开发工具向智能化、场景化发展。个人开发者追求零配置启动,企业团队需标准化方案。技术演进聚焦容器化整合、AI 辅助决策与边缘计算适配。深度测评中,WordPress Studio 适合快速原型开发,Websoft9 面板适用于企业级管理,Bulk Plugin Installer 提升批量部署效率。2025 年行业趋势显示容器化、AI 辅助及边缘计算支持成为主流,选型应结合项目规模与安全需求。
662 0
|
Java Python
> python知识点100篇系列(19)-使用python下载文件的几种方式
【10月更文挑战第7天】本文介绍了使用Python下载文件的五种方法,包括使用requests、wget、线程池、urllib3和asyncio模块。每种方法适用于不同的场景,如单文件下载、多文件并发下载等,提供了丰富的选择。
619 1
|
前端开发 安全 JavaScript
2025年,Web3开发学习路线全指南
本文提供了一条针对Dapp应用开发的学习路线,涵盖了Web3领域的重要技术栈,如区块链基础、以太坊技术、Solidity编程、智能合约开发及安全、web3.js和ethers.js库的使用、Truffle框架等。文章首先分析了国内区块链企业的技术需求,随后详细介绍了每个技术点的学习资源和方法,旨在帮助初学者系统地掌握Dapp开发所需的知识和技能。
2025年,Web3开发学习路线全指南
|
机器学习/深度学习 自然语言处理
Transformer奠基之作《Attention Is All You Need》
Transformer模型,由Google Brain和Google Research在2017年的论文中提出,颠覆了传统NLP依赖RNN和CNN的局面。该模型基于完全的注意力机制,解决了RNN的并行化难题,通过编码器和解码器中的多头自注意力机制捕捉全局依赖。训练策略结合Adam优化器、标签平滑和dropout,使其在机器翻译任务中表现卓越。尽管面临长序列处理的挑战和可能的上下文忽略问题,Transformer仍展示了注意力机制的巨大潜力,对NLP领域产生了深远影响。
1124 3
Transformer奠基之作《Attention Is All You Need》
|
存储 Ubuntu Linux
揭开自制NAS的神秘面纱:一步步教你如何用Linux打造专属网络存储王国!
【8月更文挑战第22天】构建Linux NAS系统是技术爱好者的热门项目。通过选择合适的发行版如Alpine Linux或Ubuntu Server,并利用现有硬件,你可以创建一个高效、可定制的存储解决方案。安装Linux后,配置网络设置确保可达性,接着安装Samba或NFS实现文件共享。设置SSH服务方便远程管理,利用`rsync`与`cron`进行定期备份。还可添加Web界面如Nextcloud提升用户体验。这一过程不仅节约成本,还赋予用户高度的灵活性和控制权。随着技术发展,Linux NAS方案持续进化,为用户带来更丰富的功能和可能性。
2201 1
在Linux中,什么是设备驱动程序?如何安装和卸载设备驱动程序?
在Linux中,什么是设备驱动程序?如何安装和卸载设备驱动程序?
|
消息中间件 数据安全/隐私保护
MQTT微消息队列服务器连接报错:Error: Connection refused: Not authorized
使用MQTTX工具进行测试时,通过AccessKey创建了Client ID的用户名和密码。配置了公网接入点及端口1883,但尝试连接时出现错误。已附上工具截图:![](https://ucc.alicdn.com/pic/developer-ecology/3byii5uar64gg_36327474e991439da422f38c450ef153.png)。确认过用户名、密码和Client ID无误,问题仍未解决,期待回复!