JavaScript this 绑定规则详解
目录前言五条绑定规则1. 默认绑定独立调用2. 隐式绑定方法调用3. 显式绑定call / apply / bind4. new 绑定构造函数5. 箐头函数词法绑定优先级排序由高到低总结前言JavaScript 的this与 Java、Python 等语言不同它的值不是在函数定义时确定的而是在函数被调用时动态绑定的。可以把this理解为函数执行时的上下文对象——指向当前是谁在调用我。五条绑定规则1. 默认绑定独立调用当函数不是作为对象方法调用也不是通过new、call/apply/bind调用时functionshow(){console.log(this);}show();// 非严格模式: window; 严格模式: undefined非严格模式指向全局对象浏览器windowNodeglobal严格模式指向undefined2. 隐式绑定方法调用谁调用了函数this就指向谁——即点前面的对象。constobj{name:Alice,greet:function(){console.log(this.name);}};obj.greet();// Alicethis 指向 obj⚠️注意赋值给变量再调用会丢失 thisconstfnobj.greet;fn();// undefined独立调用this 指向 window3. 显式绑定call / apply / bind手动强制指定this指向functionintroduce(age){console.log(this.name 今年 age 岁);}constperson{name:Bob};introduce.call(person,18);// Bob 今年 18 岁introduce.apply(person,[18]);// Bob 今年 18 岁参数用数组constboundFnintroduce.bind(person,18);boundFn();// Bob 今年 18 岁bind 返回新函数方法参数形式返回值call逐个传递立即执行apply数组传递立即执行bind逐个传递返回新函数4. new 绑定构造函数使用new调用函数时JS 创建新对象this指向该对象functionCar(model){this.modelmodel;}constmyCarnewCar(Tesla);console.log(myCar.model);// Tesla5. 箐头函数词法绑定箭头函数没有自己的this它会捕获定义时所在作用域的this且call/apply/bind无法改变constobj{name:Eve,greet:function(){// 普通函数this 指向 windowsetTimeout(function(){console.log(this.name);// undefined},100);// 箭头函数this 继承自外层即 objsetTimeout((){console.log(this.name);// Eve},100);}};obj.greet();优先级排序由高到低优先级绑定类型1最高new绑定2显式绑定call/apply/bind3隐式绑定对象方法调用4最低默认绑定总结记住一句话除非使用箭头函数否则this永远指向调用它的那个对象如果不知道是谁调用的就指向全局严格模式下是undefined。掌握这条规则再结合call/apply/bind能强行改变指向就能解决绝大多数this问题。

相关新闻

从零开始的C语言

从零开始的C语言

自我介绍我是澳门大学ECE的准大一学生,此前完全没有接触过代码、开发等相关知识,属于零基础阶段,专业是电气与电脑工程,会大量用到C语言、硬件编程,因此决定从零开始系统学习编程。这个博客将记录我的学习过程&#xf…

2026/7/19 7:05:50阅读更多 →
前端页面跳转技术详解与最佳实践

前端页面跳转技术详解与最佳实践

1. 窗口跳转技术解析与应用场景窗口跳转是前端开发中最基础也最核心的交互功能之一。从技术实现来看,它本质上是通过改变浏览器地址栏URL或操作浏览器历史记录来实现页面切换。我在实际项目中见过太多因为跳转逻辑处理不当导致的用户体验问题,比如页面卡…

2026/7/19 7:03:50阅读更多 →
AI视频的‘最后一公里‘:为什么画面越来越真,人物却越来越假?

AI视频的‘最后一公里‘:为什么画面越来越真,人物却越来越假?

AI视频的"最后一公里":为什么画面越来越真,人物却越来越假? 最近一周的AI新闻里,有两件事放在一起看很有意思。 第一件:Google发布了Veo 3.1 Lite,一款定位"低价走量"的视频生成模型&a…

2026/7/19 7:03:50阅读更多 →
LGTV Companion终极指南:如何让OLED电视与Windows电脑智能联动

LGTV Companion终极指南:如何让OLED电视与Windows电脑智能联动

LGTV Companion终极指南:如何让OLED电视与Windows电脑智能联动 【免费下载链接】LGTVCompanion Power On and Off WebOS LG TVs together with your PC 项目地址: https://gitcode.com/gh_mirrors/lg/LGTVCompanion LGTV Companion是一款专门解决OLED电视与W…

2026/7/19 11:32:23阅读更多 →
朴素贝叶斯算法在垃圾邮件过滤中的应用与实践

朴素贝叶斯算法在垃圾邮件过滤中的应用与实践

1. 为什么垃圾邮件过滤这么难? 每天打开邮箱,总能看到一堆"恭喜中奖""发票代开""资金解冻"的垃圾邮件,这种体验想必大家都不陌生。作为邮件服务提供商的技术负责人,我曾在2018年面临一个棘手问题&a…

2026/7/19 11:32:23阅读更多 →
5分钟免费解锁WeMod Pro会员:Wand-Enhancer完整功能激活终极指南

5分钟免费解锁WeMod Pro会员:Wand-Enhancer完整功能激活终极指南

5分钟免费解锁WeMod Pro会员:Wand-Enhancer完整功能激活终极指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 还在为WeMod Pro会员的…

2026/7/19 11:32:23阅读更多 →
C++高性能日志库spdlog:从核心原理到工程实践

C++高性能日志库spdlog:从核心原理到工程实践

1. 项目概述:为什么我们需要一个像spdlog这样的日志库?在C项目里,日志功能就像项目的“黑匣子”。无论是调试一个诡异的线上崩溃,还是追踪用户操作流,甚至是监控系统性能,日志都是我们最可靠的伙伴。但很多…

2026/7/19 11:32:23阅读更多 →
如何用3分钟解锁你的加密音乐文件:Unlock Music完整指南

如何用3分钟解锁你的加密音乐文件:Unlock Music完整指南

如何用3分钟解锁你的加密音乐文件:Unlock Music完整指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: htt…

2026/7/19 11:32:23阅读更多 →
解决0x80072EFE报错,Windows系统自动安装.Net Framework3.5

解决0x80072EFE报错,Windows系统自动安装.Net Framework3.5

目前在做桌面运维工作,昨天工作中遇到公司员工电脑访问一些网站需要安装.Net Framework3.5的情况,但是Windows自动下载安装无法执行下去,会有报错, 加上领导要求不能去乱七八糟的网站下载东西,怕有毒,所以自…

2026/7/19 11:30:23阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:01:04阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:01:04阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:01:04阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:01:04阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:01:04阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:01:04阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/18 22:49:46阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/18 14:49:24阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/18 18:49:35阅读更多 →