当我尝试调用“测试”功能时,我收到错误 如何解决? (没有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>
答案 0 :(得分:0)
这是因为你引用this.Foo
作为事件,实际发生的是它将该函数复制到对象范围之外,ergo this
不存在。大多数人所做的是在事件周围使用匿名函数/包装器。