函数中的this指向哪里是怎么判断的?

函数中的this指向哪里是怎么判断的?

https://class.imooc.com/course/qadetail/197035

这个问题里,问题中的this所在函数是在那个对象中的,可是打印结果是window上的a;而老师回答中的例子是直接在全局中的,this也是指向window。

this指向哪里是怎么判断的呢,难道函数中的this都是指向window?

正在回答

登陆购买课程后可参与讨论,去登陆

4回答

同学你好,理解的没有问题, this在函数里面,指向函数的调用对象;this不在函数里面,指向的就是创建时的环境了 。

祝学习愉快!

好帮手慕星星 2020-06-09 14:09:17

同学你好,老师看了下面的回复,和另外一个问题差不多,所以没有进行回答。参考下面解析:

输出obj对象看看

http://img1.sycdn.imooc.com//climg/5edf23c4090c66f103710138.jpg

b的值为2,也是this.a的值。obj对象在赋值的时候先执行右侧{}中的内容,创建对象的时候,this指向的是window对象(没有调用对象,所以指向全局)。当执行obj.fun()的时候,this指向obj,所以obj.b也就是2 。

自己测试理解下,祝学习愉快!

  • 提问者 Aurora_Meteor #1
    对象属性中的this是指向对象定义时的环境,函数里面的this是指向函数执行时的环境?只有对象的属性方法中的this才指向对象本身?
    2020-06-09 14:43:31
好帮手慕星星 2020-06-09 11:33:14

同学你好,指的是这个问题吗?

https://class.imooc.com/course/qadetail/230593

已经进行了回复,可以查看一下哦。

祝学习愉快!

  • 提问者 Aurora_Meteor #1
    不是呀,是我这个问题中的那个链接里其他同学的问题,我也不懂,我在下面的回复里复制了那个问题里的代码并且提出了我的疑问的呀,麻烦老师仔细看一下呢
    2020-06-09 12:20:24
好帮手慕星星 2020-06-09 09:46:40

同学你好,具体情况具体分析,函数中的this指向调用函数的对象

http://img1.sycdn.imooc.com//climg/5edee9710961675902150105.jpg

fn()这样写实际上是window.fn(),也就是window对象调用的,所以this指向window

http://img1.sycdn.imooc.com//climg/5edee9f109dd44e708980055.jpg

http://img1.sycdn.imooc.com//climg/5edee9fd0997894d03030100.jpg

祝学习愉快!

  • 提问者 Aurora_Meteor #1
    那那个问题里的this呢? var a=2; var obj={ a:1, b:this.a, fun:function(){ console.log(this.b); //b=2 } } 调用obj.fun(),fun的调用对象不就是obj吗,在fun中打印this.b,不就是打印obj.b么,b是this.a,这里的this不也是obj么,也就是打印obj.a?但是打印出来的是window.a,搞不明白啊
    2020-06-09 10:43:54
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师