Javascript将dom事件设置为构造函数中的原型方法

Javascript将dom事件设置为构造函数中的原型方法,javascript,Javascript,我遇到了一些Javascript问题,假设我们有一个构造函数 function test(element) { this.element = element; this.element.onfocus = function() { this.onfocus(); } } test.prototype.onfocus = function() { alert("focused"); } new test(document.getElementByID("E1")); 因此,我试图

我遇到了一些Javascript问题,假设我们有一个构造函数

function test(element) {
  this.element = element;
  this.element.onfocus = function() { this.onfocus(); }
}

test.prototype.onfocus = function() {
  alert("focused");
}

new test(document.getElementByID("E1"));
因此,我试图在构造函数中动态设置焦点事件,但它似乎不起作用,我也弄不明白

有人帮忙吗

谢谢


AJ

在JavaScript中,在
this.element.onfocus=function(){this.onfocus();}
的上下文中,第二个this是触发事件的元素

换句话说,如果您想以正确的方式工作,您的代码应该是这样的:

function test(element) {
  this.element = element;

  var currentObject = this;
  this.element.onfocus = function() {currentObject.onfocus(); }
}
不要认为JavaScript是一种体面的面向对象编程语言,因为它是面向原型的,并且它有一些弱点,比如影响代码的东西

你为什么不读这篇文章?我相信它会为你澄清这个关键词:


必须存储对“this”的引用,因为onfocus函数位于另一个上下文中,“this”指的是其他内容:

function test(element) {
  this.element = element;
  var that = this;
  this.element.onfocus = function() { that.onfocus(); }
}

非常感谢,这非常有效,我会采纳你的建议并阅读这篇文章。这不是关于垃圾邮件,但也许你对我为JavaScript所做的一些OOP实现感兴趣,它的工作非常有魅力,因为我将在一些个人项目中使用它,我将向开源社区发布:。