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


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();

我在类类型原型中定义了两个方法。 但是当我在函数初始化中调用函数名称 hihi 时。 当我使用创建类型为 Chat 的实例运行单个代码时。 它无法运行并显示错误。

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

我如何在初始化函数名称中调用此函数。

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

因此,为了获得正确的this您必须像这样绑定Chat原型的this

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

如果要调试此内容,可以console.log(this)init()方法,您将看到HTMLElement

最新更新