JavaScript在添加侦听器时丢失引用
JavaScript losing reference when adding an listener
下面是我的代码,当将objects方法keydown添加到eventlistener时,我将失去对对象的引用。有人知道为什么会发生这种情况吗?正确的方法是什么
<html>
<head>
<title>Testpage</title>
<script type="text/javascript">
Person = function(fname, lname)
{
this.lastname=fname;
this.firstname=lname;
}
Person.prototype.toString = function()
{
return this.firstname+" "+this.lastname;
}
Person.prototype.keydown = function (event)
{
alert(this.firstname);
//return this.firstname+" "+this.lastname;
}
function init()
{
var k=new Person("Paul", "Nistor");
document.getElementById("nowpressed").value=k.toString();
window.addEventListener("keydown", k.keydown, true);
}
</script>
</head>
<body onLoad="init();">
<form>
Now pressed: <input id="nowpressed" name="nowpressed" type="text" size="20" value="">
</form>
</body>
</html>
一种方法是提供匿名函数:
window.addEventListener("keydown", function() {
k.keydown();
}, true);
另一种方法是显式地将k.keydown方法绑定到适当的上下文:
window.addEventListener("keydown", k.keydown.bind(k), true);
相关文章:
- Highslide(iframe的侦听器)
- 如何在for循环中添加事件侦听器
- 选项卡侦听器未被来自后台脚本的消息激活
- 未命中服务器发送的事件侦听器
- 如何覆盖原型中的事件侦听器
- 加载侦听器上的函数触发得太早
- 无法将事件侦听器附加到画布
- JavaScript在添加侦听器时丢失引用
- 如何从函数引用元素(从事件侦听器调用)
- 对象在JavaScript中引用,但在使用事件侦听器时不引用
- 在侦听器函数 (Javascript) 中调用方法时引用错误
- 将GC清除其侦听器中引用的已移除元素变量
- 与许多事件侦听器和函数引用一个对象相比,什么是更好的方法
- 事件引用在作为方法传递的事件侦听器回调上未定义
- 通过函数引用删除函数中的所有事件侦听器
- Javascript:循环遍历数组以创建侦听器,通过引用和值调用发出问题
- 在没有处理程序引用的情况下覆盖侦听器,是否可以访问Ext.data.store上的(可能是私有的)事件属性
- 如何通过侦听器引用数组中的当前dom元素来更改活动
- 引用事件侦听器中的工具提示,使其在悬停时保持打开状态
- & # 39;这个# 39;在事件侦听器中总是引用相同的对象