我遇到了一些 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/