事件中的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>第一、二部分的代码改成这样,你看看是不是容易理解一些。 验证是否是数字的小问题... 关于图片预览的问题.(在线求解) 如何释放Excel.Application? [求解]:关于“批选择”的实现方法,伙计们请进。。 一个关于函数执行的奇怪问题! switch语法是怎样的? 紧急求教:页面中的Mediaplayer文件名如果用隐藏控件的值传进来,为何总是空呢? 二维数组的最大最小值求法 谁有javacript的比较经典的教程? 帮忙啊,内容见下 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>
第一、二部分的代码改成这样,你看看是不是容易理解一些。