<form action =“javascript:alert(this);”>什么是“this”?</form>

时间:2009-09-29 05:36:42

标签: javascript

在尝试调试正在提交的内容时,我写了这个。

<form action="javascript:alert(this);"
  1. 是否有可能提醒您的是什么 正在提交?
  2. 这里“this”表示什么?
  3. 我在警报框中得到了对象&amp;无法决定任何事情。 : - )

3 个答案:

答案 0 :(得分:7)

在您的示例中,this是全局window对象。亲自尝试一下:

<form action="javascript:alert(typeof this.setTimeout);">

导致"function"(即全局函数)。或者尝试:

<form action="javascript:alert(this.nodeType);">

导致undefined(即 指向表单元素)*。

属性中"this"的值只能是以下两种情况之一:

  1. 全局window对象
  2. 元素本身
  3. this指向元素本身的唯一时间是在intrinsic event attribute内使用"on"的前缀(例如"onclick""onload",{{ 1}}等。这些属性很特殊:浏览器将this重新范围扩展到事件触发的元素,并在属性中创建event对象(具有该名称)。

    如果属性其中一个内部事件,"this"将成为全局window对象。


    脚注:

    *除非你碰巧有一个名为"nodeType"

    的全局var

答案 1 :(得分:2)

<form action="javascript:alert(this === window);">
<input type="submit" value="Submit">
</form>
单击“提交”时,

弹出“true”。这是窗口对象。一个可能相关的参考:https://developer.mozilla.org/en/DOM/element.addEventListener - 请参阅“处理程序中的此值”下的部分。

答案 2 :(得分:0)

this在JavaScript中使用时,HTML元素的属性是元素本身的引用。因此,表单上下文中的this表单 DOM对象。

换句话说,相当方便地使用关键字:)