this指向运行期绑定,即函数执行时根据调用方式动态确定this值:new调用→新实例;call/apply/bind→显式指定;对象方法调用→该对象;独立调用→全局或undefined;箭头函数则继承外层词法this。

“this 指向运行期绑定”意思是:函数里的 this 不是在写代码时(定义时)就定死的,而是在函数真正被调用的那一瞬间,根据怎么调用来决定它指向谁。
关键不是函数在哪写的,而是谁在调用它
同一个函数,被不同对象调用,this 就不同:
-
person.sayHi()→ this 指向person -
animal.sayHi()→ this 指向animal -
sayHi()(直接调用)→ this 指向全局对象(非严格模式)或undefined(严格模式)
常见调用方式决定 this 值
函数执行时,JavaScript 引擎会按优先级判断 this:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- new 调用:指向新创建的实例对象
- call / apply / bind:显式指定谁是 this
-
对象方法调用(如
obj.fn()):指向该对象(隐式绑定) -
独立调用(如
fn()):默认绑定到全局或undefined
箭头函数是个例外
箭头函数没有自己的 this,它不参与运行期绑定,而是继承外层函数作用域的 this 值。也就是说,它的 this 在定义时就由外层环境锁定了,不会随调用方式改变。
为什么这个概念容易出错?
因为开发者常误以为 this 取决于函数写在哪、属于哪个对象。但实际只要把函数赋值给变量再调用,比如:
const fn = obj.method;-
fn();→ 此时已脱离obj,触发默认绑定
这种“丢失 this”的情况,正是运行期绑定最典型的体现——调用方式变了,this 就跟着变。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










