我可能做错了什么,但在尝试将一些面向对象编程应用于 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,我没有尝试过这个。但我想这种行为是一样的。