函数原型调用另一个函数原型javascript

时间:2018-06-12 11:24:23

标签: javascript function-prototypes

function Chat() {
    // hander vent //
    // this.message_text.on("keyup click", this.saveMessage);
    $('.chat').on("click", this.init);
}

Chat.prototype.init = function() {
    var sef = this;
    this.hihi();
}
Chat.prototype.hihi = function() {
    return 2;
}

let chat = new Chat();

我在类类型原型中定义了两个方法。 但是当我在函数init中调用函数名hihi时。 当我使用类型为Chat的create instance运行代码时。 它无法运行并显示错误。

  

TypeError:this.hihi不是HTMLButtonElement.Chat.init中的函数(fotozidiqo.js:9:10)

如何在init函数名中调用此函数。

1 个答案:

答案 0 :(得分:-1)

执行此操作时:$('.chat').on("click", this.init);,jQuery将this方法的init()更改为从$('.chat')返回的元素。这就是为什么在init方法中调用this.hihi();时未定义的原因,因为它在HTMLElement上不存在。

因此,为了获得正确的this,您必须绑定this原型的Chat,如下所示:

function Chat() {
    $('.chat').on("click", this.init.bind(this));
}
  

如果您要对此进行调试,可以使用console.log(this)方法init(),并且您会看到HTMLElement