this指向
2024-02-08 21:14:03
# javascript
先看两段代码,分析各自的输出结果
1 | name = "Jerry"; |
1 | name = "Jerry"; |
结果:
第一个输出Jerry,第二个输出Tom
这类问题可以简化为this的指向:
1 | var object = { |
当调用object.getFunc()
时,由于getNameFunc
是一个方法,当它被调用时,它的执行上下文(this)会绑定到对象 object
,此时的@1处的this指向的是object。但在该方法内部,它返回了另一个函数,我们假设令该返回的函数名为f1,object.getFunc()
执行后,再执行f1() , 由于该函数是在全局作用域下调用并执行的,所以@2处this指向window。
在上面最初的第二段代码中,用that保存了object中的this,所以在执行完后输出的是object中的name,也就是Tom;反观第一段代码,return出去的函数是在全局条件下调用执行的,所以this指向的是window,输出的也是window下的name,也就是Jerry了。