【发布时间】:2013-05-11 23:18:28
【问题描述】:
我可能做错了什么,但在尝试将一些面向对象编程应用于 Javascript 时,我发现了一些有趣的行为。考虑以下
function Bug(element) {
this.focusedCell = null;
element.addEventListener('click', this.onClick, true);
};
Bug.prototype.onClick = function(event){
console.log("this is: ");
console.log(this);
};
当我从控制台调用该方法时,我看到了正确的“this”实例,但是当我单击文档中的元素时,我看到的是文档元素代替了该实例。所以......可能将事件侦听器与实例方法一起使用可能不是一个好主意,至少我这样做的方式是这样。
所以问题是:
是否可以有这样的事件监听器,它调用 javascript 对象的实例方法,同时保留调用中的实例?
这样做有更好的模式吗?
编辑: 除了 Chrome 之外,我还没有尝试过这个。但我想行为是一样的。
【问题讨论】:
-
函数创建一个新的作用域。
-
谢谢,抱歉不知道这是重复搜索,没有显示任何内容。
-
@FelixKling 哇,亲爱的,你找到了一个完美的伴侣..
-
实际上有很多重复,但它们的标题可能很奇怪。
-
我也googled 了,不过没关系。我在 SO 上搜索了“覆盖这个”,但没有找到。我不知道它与覆盖的事件侦听器明确相关。
标签: javascript oop events