JavaScript中this的指向由调用时决定,而非定义时;普通调用指向全局或undefined,对象方法调用指向该对象,构造调用指向新实例,箭头函数继承外层this。

JavaScript中的this不是指向函数本身,也不是定义时绑定的,而是**调用时决定的**——它指向函数执行时的“当前对象”,也就是调用该函数的那个对象。
谁调用,this就指向谁
这是最核心的规则。函数怎么被调用,决定了this的值:
- 普通函数调用:
fn()→this指向全局对象(浏览器中是window,严格模式下是undefined) - 对象方法调用:
obj.method()→this指向obj - 构造函数调用:
new Fn()→this指向新创建的实例 - 箭头函数:不绑定自己的
this,它沿用外层作用域的this值
常见容易混淆的情况
很多问题出在“调用方式变了,但没意识到this也变了”:
- 把对象方法赋给变量再调用:
const f = obj.method; f();→ 此时this不再是obj,而是全局或undefined - 事件回调:
btn.onclick = obj.handleClick;→ 点击时this是btn元素,不是obj - 定时器里直接调用方法:
setTimeout(obj.method, 100);→ 同样丢失原始this
如何固定this的指向
有几种常用且清晰的方式:
标签: javascript es6 java 浏览器 app win 作用域
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~