谈谈javascript中的函数定义与执行以及this指向问题

谈谈javascript中的函数定义与执行以及this指向问题,第1张

图中,在页面加载时候,是不会执行console.log("2i="+i),但是会执行console.log("i="+i)这段。

因为在执行itemClick这个函数时候,我们只是给objlist的每个对象的onmouseover属性赋值了一个方法,也就是定义了一个方法,但是并没有调用该方法。那什么时候调用,就是我们鼠标移动的时候调用。鼠标在调用这个方法的时候,onmouseover函数内部是没有i的,此时会向上寻找i,但此时的i已变成objlist.length,所以在onmouseover函数的内部是不能使用i的,那么如何才能拿到这个对象,那么this就派上了用场。

this 是什么?

浏览器解析器在调用函数的时候,会向函数内部传递一个隐含的是实参,就是this,它指向的是一个对象,也称为函数执行的上下文,而根据函数调用方式的不同,this就指向了不同的对象。此文中,函数的调用方式以鼠标移动到某个对象,触发该对象的鼠标响应函数,因此这里这this就指向的是绑定该函数的那个对象,而想要改变该对象的一些css属性,那自然就是this.style....

总结一下this的指向问题,主要有以下几种情况

根据函数的调用方式不同,this会指向不同的对象
1.以函数的形式调用时,this永远指向window
2.以方法的形式调用时,this就是调用方法的那个对象
3.当以构造函数的形式调用时,this就是新创建的那个对象
4.使用call 和apply调用时,this是指定的那个对象
5.在事件的响应函数中,响应函数是给谁绑定的,this就是谁
 

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1322745.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-12
下一篇2022-06-12

发表评论

登录后才能评论

评论列表(0条)

    保存