Javascript 在构造函数中将 dom 事件设置为原型(prototype)方法

标签 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 中,在 this.element.onfocus = function() {this.onfocus(); } 的上下文中,第二个 this 是触发事件的元素。

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

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

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

不要认为 JavaScript 是一种不错的面向对象编程语言,因为它是面向原型(prototype)的,并且有一些弱点,例如影响代码的弱点。

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

关于Javascript 在构造函数中将 dom 事件设置为原型(prototype)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6691450/

相关文章:

javascript - jQuery 计算 - 如何根据发送到一个数量字段的总计触发多个折扣条件

c# - 改进 GUI/网站的设计

javascript - 使用JS测量图像高度并在CSS中使用

javascript - 为 Parse.com 设置云代码

javascript - 使用 UI-Router 和 AngularJs 在位置更改后设置消息

javascript - 从 vue.js 中的 foreach 循环访问变量

javascript - CodeMirror 'mode' 可以用颜色替换标签吗?

javascript - 使用循环渲染图像并更新状态并在渲染图像内显示状态值

javascript - 两次更改相同的 HTML 标记

javascript - 缩小 signalr/hubs 文件