您的位置:首页 > Web前端 > JavaScript

this" JavaScript

2006-10-03 18:11 363 查看
this是JavaScript中功能最强大的关键字之一。不幸的是,如果你不知道它具体怎么工作,你将很难正确使用它。

下面我来阐述如何在事件处理中来使用this,之后我会附加一些this相关的例子。

Owner
接下来文章中我们将要讨论的问题是:在函数doSomething()中this所指的是什么?

element.onclick = doSomething; 这个函数被完整复制到onclick属性(现在成为了函数)。因此如果这个event handler被执行,this将指向HTML元素,并且该元素的颜色得以改变。

<element onclick="doSomething()">
你将不能拷贝该函数!反而这种差异是非常关键的。onclick属性并不包含实际的函数,仅仅是一个函数调用。

doSomething();
因此,它将声明“转到doSomething()并且执行它”。当我们到达doSomething(),this关键字又重新指向了全局的window对象,函数返回错误信息。

element.onclick = doSomething;
alert(element.onclick)
你将得到

<element onclick="doSomething()">
alert(element.onclick)
你将得到

element.onclick = doSomething
element.addEventListener('click', doSomething, false)
<element onclick="this.sytle.color = '#cc0000';">
例子--引用

下述情况中,this指向window:

element.attachEvent('onclick', doSomething)
<element onclick="doSomething()">
注意attachEvent()的出现。Microsoft event registration model最主要的弊端是attachEvent()创建了一个指向函数的引用,而不是复制它。因此有时不可能知道哪个HTML正在处理该事件。

组合使用

当使用内联事件注册时,你可以将this发送到函数以至于可以正常使用:

<element onclick="doSomething(this)">
function doSomething(obj) //this出现在event handler中并被发送到函数
//obj指向HTML元素,因此可以这样:
obj.style.color = '#cc0000';
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: