什么是“;这个“;指的是在一个“函数”中的函数内部;上;属性
What does "this" refer to inside a function in an "on.." attribute?
例如,<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
在非严格模式下将默认为全局对象,或者在严格模式下保持未定义状态。
- 从嵌套函数访问函数属性
- Javascript嵌套函数属性继承
- Javascript-在全局作用域中调用本地函数/属性
- 正在重置原型对象的构造函数属性
- javascript函数属性设置器中的延迟
- jQuery插件返回this.each并为每个对象添加函数属性
- 从函数属性访问对象属性;不适用于Firefox
- 当使用“”创建时保留函数属性;绑定”;
- 在多个(html)元素上循环执行相同的JavaScript函数属性更改
- 如何将新的构造函数属性推送到数组
- 通过构造函数属性和运算符实例设置继承
- 角度表达式无法使用构造函数属性分辨变量类型
- 为什么要在函数定义之外引用静态变量(函数属性)
- Javascript“构造函数”属性中的错误 - IE 8
- 为什么浏览器支持对象的隐式函数属性
- 构造函数属性值应该是什么 .a 原型构造函数或对象构造函数本身
- 使用模块模式调用函数属性
- React 组件流类型检查中的可选函数属性失败
- 是否可以在 javascript 中的对象文字上定义函数属性
- JavaScript:如何捕获对象的任何缺失函数/属性