什么是“;这个“;指的是在一个“函数”中的函数内部;上;属性

What does "this" refer to inside a function in an "on.." attribute?

本文关键字:函数 属性 一个 内部 这个 什么      更新时间:2023-09-26

例如,<td id='xyz' onmouseover='doIt(this)'...之间有什么区别和CCD_ 2。this是DOM元素吗?

浏览器调用构造的处理程序函数,以便this引用事件所针对的DOM元素。因此,this只是对出现这种属性的DOM元素的引用。

在这个例子中,this指的是处理程序绑定到的DOM元素。我建议阅读quicksmode.org上的优秀文章,它解释了这一点,以及更多关于事件处理的内容。

<td id='xyz' onmouseover='doIt(this)'...<td id='xyz' onmouseover='doIt()'... 有什么区别

在第一种情况下,您将参数传递给函数,该函数是DOM元素,而在第二种情况下则不传递。

this将引用DOM元素,在您的示例中是td DOM元素。

查看事件处理程序的MDN页面以获取更多信息,特别是关于内联事件处理程序部分。

您问"有什么区别"。不同之处在于,在第一种情况下,从执行上下文进行调用,其中this是对元素的引用,并且该引用作为第一参数传递给doIt。在第二种情况下,不传递任何参数。

现在是为什么。

当事件到达一个元素时,相关的处理程序将查看是否有任何代码要运行。如果有,它将创建一个新的执行上下文,就像在函数代码中一样,全局对象位于其作用域链上,this绑定设置为元素。然后它将执行代码。因此,在处理程序的执行上下文中,当代码:

doIt(this)

this引用该元素。请注意,由于在对doIt()的调用中未设置this,因此其this在非严格模式下将默认为全局对象,或者在严格模式下保持未定义状态。