none
在一个类中,“this“为何有时候是类本身,有时候又变成了其他对象!? RRS feed

  • 问题

  • 用JavaScript写的一个类,在类里面引用类本身的属性和方法是通过使用”this“关键字,可是我却发现在某些情况下,例如在处理一些键盘或者鼠标事件的时候,”this”却变成了出发事件的那个对象,这使得我无法访问类本身的属性和方法。

    例如:

    function test()

    {

        this.UserName="admin";

        document.getElementById("xxx").attach("onmousemove",this.MouseHandler);

    }

    test.prototype=

    {

        MouseHandler:function()

        {

          //code here

          alert(this.UserName);

        }

    }

    实际运行的时候,MouseHandler方法里面的this并不是类本身,而是处罚鼠标事件的DOM对象。这让我很头痛,请问有什么方法可以获取类本身的指针呢?


    da jia hao!
    2012年1月19日 16:37

答案

  • function test()

    {

    var me=this;

        me.UserName="admin";

    document.getElementById("xxx").attach("onmousemove",function(){me.MouseHandler()});

    }

    test.prototype=

    {

    MouseHandler:function()

    {

    //code here

    alert(this.UserName);

    }

    }

    • 已标记为答案 liubin 2012年2月14日 4:21
    2012年1月29日 14:18

全部回复

  • function test()

    {

    var me=this;

        me.UserName="admin";

    document.getElementById("xxx").attach("onmousemove",function(){me.MouseHandler()});

    }

    test.prototype=

    {

    MouseHandler:function()

    {

    //code here

    alert(this.UserName);

    }

    }

    • 已标记为答案 liubin 2012年2月14日 4:21
    2012年1月29日 14:18
  • 你好,正宗:)

    有些小小补充更正,倘若错误,敬请更正:

    var me;   //全局变量

    function test()

    {

       me = this;

        me.UserName="admin";

    document.getElementById("xxx").attach("onmousemove",function(){me.MouseHandler()});

    }

    test.prototype=

    {

    MouseHandler:function()

    {

    alert(me.UserName);

    }

    }


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处
    2012年1月30日 5:39