javascript - 原型(prototype)内部的事件触发

标签 javascript

当我尝试调用“测试”函数时出现错误。
如何解决? (没有 jquery!)

浏览器:火狐
错误:

TypeError: this.Test is not a function

    <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>

最佳答案

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

关于javascript - 原型(prototype)内部的事件触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2980567/

相关文章:

javascript - 如何使用 javascript 更改 onClick 中的值?

javascript - 查找数组中重复的对象值并将它们合并 - JAVASCRIPT

javascript - jQuery Vmap 刷新与函数加载

javascript - 如何在 javascript 中测试 css 颜色

javascript - 在 Twitter Bootstrap 模式对话框中关注文本字段

javascript - 在 Microsoft Dynamics CRM 2011 中获取加载的描述内容

javascript - Backbone.js 和 mod 重写

javascript - 自动为数据提供不同的 View

javascript - 用户输入时自动插入字符串

javascript - 如何匹配 HTML5 Canvas 中的水平线?