登录
首页 >  文章 >  前端

JavaScript 中 this 指向的谜团:调用与赋值的区别?

时间:2024-11-14 16:12:54 129浏览 收藏

积累知识,胜过积蓄金银!毕竟在文章开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《JavaScript 中 this 指向的谜团:调用与赋值的区别?》,就带大家讲解一下知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

JavaScript 中 this 指向的谜团:调用与赋值的区别?

this指向的疑虑与解答

对于this指向的问题,本文将围绕两个代码段展开讨论:

function foo() {
  console.log(this)
}

var obj = {
  a: 2,
  foo: foo
}
obj.foo()
var obj = {
  a: 2,
  foo: console.log(this)
}
obj.foo()

问题:

  • 第一个代码段和第二个代码段是否等价?如果否,请解释原因。
  • 这两个代码段中,this指向了什么?

解答:

  • 第一个问题:两个代码段不等价。虽然看起来相似,但它们在执行时表现不同。

    • 第一个代码段中,foo方法没有立即执行。obj.foo()语句调用该方法时,this指向obj对象。
    • 第二个代码段中,foo直接被赋值给了obj.foo属性。这实际上将console.log(this)的执行结果(typeof this得到的window对象)赋值给了foo属性。
  • 第二个问题:

    • 第一个代码段:this指向obj对象,因为obj.foo()调用foo方法时,foo函数中的this指向调用者obj。
    • 第二个代码段:this指向window对象,因为console.log(this)的执行结果是window对象,它被赋值给了foo属性。

今天关于《JavaScript 中 this 指向的谜团:调用与赋值的区别?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>