我觉得我所拥有的是正确的代码,但是显然我在这里遗漏了一些东西。

我想做的是在构造函数的原型对象中创建一个事件方法。这是我到目前为止的内容:

function Controls(but) {
    this.but = document.getElementById(but);
    this.but.onclick = function() {
        displayMessageTwo();
    }
}

Controls.prototype.displayMessageTwo = function() {
    alert("HELLO");
}

var Main = new Controls('testingTwo');


我在这里的逻辑是,我正在创建一个构造函数,从该构造函数可以为某些东西(如幻灯片)构建控件。.this.but等于称为任何参数的链接的html元素作为构造函数的参数。

在原型对象中,定义我的方法,然后创建我的对象。但是,这不符合我的预期。

我在这里做错了什么?

最佳答案

我怀疑事件处理程序触发时,调用的上下文不是您注册回调的实例。

试试下面的东西

function Controls(but) {
    var that = this;
    this.but = document.getElementById(but);
    this.but.onclick = function() {
        that.displayMessageTwo(); // that is closed-in
    }
}

关于javascript - 从原型(prototype)对象继承的JavaScript事件方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13748625/

10-15 15:11