为了账号安全,请及时绑定邮箱和手机立即绑定

函数嵌套中,this指向对象会发生怎么样的变化?

函数嵌套中,this指向对象会发生怎么样的变化?

慕丝7291255 2018-11-15 14:11:21
我写了一个demo,其功能是鼠标移入时长方形块长度变长,然后高度变高,遇到如下问题:在执行下面这段函数嵌套时    oDiv[0].onmouseover = function(){         that = this;         changeStyle(that,'width',400,function(){             changeStyle(that,'height',300);         });     }必须使用that=this传参,否则浏览器会报如下错误Uncaught TypeError: Failed to execute 'getComputedStyle' on 'Window': parameter 1 is not of type 'Element'.我在最后贴出了整套代码,我想知道为什么用that=this传参能解决问题?不传参的话this两次分别指向了谁?chrome和firefox有没有什么好的调试方法能监视每一次this值的变化并显示出来?html代码:css代码:js代码:

1 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

通过事件调用的函数的this指向触发该事件的元素,所以oDiv[0].onmouseover事件调用函数的this指向的是oDiv[0];

changeStyle函数传入的回调函数的this指向的是window,因为 if (fn) { fn();}相当于window调用了该函数

如果想跟踪代码的执行情况可以采用断点调试,能看到各个变量在运行中的赋值情况


查看完整回答
反对 回复 2018-12-13

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号