事件触发原型内部

时间:2010-06-05 13:42:21

标签: javascript

当我尝试调用“测试”功能时,我收到错误 如何解决? (没有jquery!)

浏览器:Firefox
 错误:

  

TypeError:this.Test不是函数

    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <title>Untitled Document</title>
        <script type="text/javascript">



            MyClass = function(){
            }

            MyClass.prototype = {

                Init: function(){
                    var txt = document.getElementById("text");

                    if (txt.addEventListener) {
                        txt.addEventListener("keyup", this.Foo, true)
                    }


                },

                Foo: function(){
                    this.Test();
                },

                Test: function(){
                    alert('OK');
                }


            }
            window.onload = function(){
                obj = new MyClass;
                obj.Init();
            }
        </script>
    </head>
    <body>
    <textarea id="text" rows="10">
    </textarea>
    </div>
</body>

1 个答案:

答案 0 :(得分:0)

这是因为你引用this.Foo作为事件,实际发生的是它将该函数复制到对象范围之外,ergo this不存在。大多数人所做的是在事件周围使用匿名函数/包装器。