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函数名中调用此函数。
答案 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
。