JavaScript中的“this”关键字如何理解?

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

JavaScript中的“this”关键字如何理解?-第1张图片-佛山资讯网

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; → 点击时thisbtn元素,不是obj
  • 定时器里直接调用方法:setTimeout(obj.method, 100); → 同样丢失原始this

如何固定this的指向

有几种常用且清晰的方式:

标签: javascript es6 java 浏览器 app win 作用域

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~