事件中的this 本帖最后由 qlz37238 于 2012-02-07 10:07:31 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 代码1中的this指向的是类型为function的object代码2中的this指向hyper link //第一个类似于(obj表示a标签)obj.onclick=function(){ a(); //function a 的作用域为window};//若要得到预期结果,可以这样调用,可以google call的用法<a href="#" onclick='a.call(this);'>a</a>//也可以直接传入a标签<script type="text/javascript"> function a(obj) { alert(obj); }</script><a href="#" onclick='a(this);'>a</a> 第一种方法采用在事件函数中调用函数的方式,这种情况下this的指代根据上下文确定,第二种方法是把函数作为了对象的一个方法,这时this指代拥有方法的对象要弄清楚this在各种情况下的指代对象,不真真正正写上几个控件是不得行的其实说穿了也简单:方法中的this指代的就是方法的拥有者,全局函数中的this指代window,局部函数中的this要看上下文,看其归属的对象但是要记住,this只有在函数调用时才能确定其中的this的指代,比如同一个函数作为全局函数被调用和作为方法被调用其this代表的东西就不一样。var obj=new Object();function test(){ alert(this);} obj.test=test;test();obj.test();//都是这个函数,但是this不一样,自己体会 <script type="text/javascript"> function a() { var b; alert(this); }</script><a href="#" onclick='a();'>a</a>第二部分:<script type="text/javascript"> function a() { var b; b=document.getElementsByTagName('a')[0]; b.onmouseover= function() { alert(this); } } window.onload=a</script><a href="#" onclick='a();'>a</a>第一、二部分的代码改成这样,你看看是不是容易理解一些。 setTimeout的值是怎么回事啊 ? jquery中append产生的节点的问题 jquery用鼠标将div1拖动到目标div2如何在目标div2中取到拖动div中的值? 取整问题 哭求各位JS高手,小第一个问题想问! 如何判断列表框中某一项是否被选中 求助一段jsp代码 在图片上右击鼠标马上弹出图片另存为的保存对话框可以做到吗 如何使一段文件加粗。 如何通过javascript使iframe里的网页刷新?着急!帮忙呀! Jquery 删除文件问题 一个新手开始学习JQuery的疑惑
代码2中的this指向hyper link
obj.onclick=function(){
a(); //function a 的作用域为window
};//若要得到预期结果,可以这样调用,可以google call的用法
<a href="#" onclick='a.call(this);'>a</a>//也可以直接传入a标签
<script type="text/javascript">
function a(obj)
{
alert(obj);
}</script>
<a href="#" onclick='a(this);'>a</a>
其实说穿了也简单:
方法中的this指代的就是方法的拥有者,全局函数中的this指代window,局部函数中的this要看上下文,看其归属的对象
但是要记住,this只有在函数调用时才能确定其中的this的指代,比如同一个函数作为全局函数被调用和作为方法被调用其this代表的东西就不一样。
var obj=new Object();
function test()
{
alert(this);
}
obj.test=test;
test();
obj.test();//都是这个函数,但是this不一样,自己体会
<script type="text/javascript">
function a()
{
var b;
alert(this);
}</script><a href="#" onclick='a();'>a</a>
第二部分:<script type="text/javascript">
function a()
{
var b;
b=document.getElementsByTagName('a')[0];
b.onmouseover=
function()
{
alert(this);
}
}
window.onload=a
</script><a href="#" onclick='a();'>a</a>
第一、二部分的代码改成这样,你看看是不是容易理解一些。