本帖最后由 qlz37238 于 2012-02-07 10:07:31 编辑

解决方案 »

  1.   

    代码1中的this指向的是类型为function的object
    代码2中的this指向hyper link
      

  2.   

    //第一个类似于(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>
      

  3.   

    第一种方法采用在事件函数中调用函数的方式,这种情况下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不一样,自己体会
      

  4.   


    <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>
    第一、二部分的代码改成这样,你看看是不是容易理解一些。