当前位置: 首页 > Web前端 > JavaScript

JS的this指向

时间:2023-03-27 17:18:42 JavaScript

关于this指向的问题,我只记得谁调用普通函数就指向谁,而this指向箭头函数定义在谁里面。不过好像这个理解有点肤浅.所以我就傻了,就想起这个就去面试了,所以当面试官问这个问题的时候,我就GG了。varo={v:'你好',p:['a1','a2'],f:functionf(){this.p.forEach(function(item){console.log(this.v+''+item);console.log('thisinfis:'+this)})}}o.f()我的回答是:helloa1helloa2但实际上是:undefineda1undefineda2我之前的理解是,o.f(),即就是调用了对象o,那么函数f中的this就指向了o,所以我继续猜测,如果在函数中定义了函数,那么函数内部的this也可能指向对象o,所以它导致错误。所以我发布了这个问答:https://segmentfault.com/q/10...解决了我的疑惑。所以这个点其实要记住下面的原则就可以了。(1)普通函数的this点无法确定。谁叫这个就指向谁;至于没有人调用,那么在严格模式下,this默认指向undefined;在非严格模式下,默认指向全局对象;(2)箭头函数,定义在哪里,指向哪个对象;