函数原型调用另一个函数原型javascript
我在类类型原型中定义了两个方法。 但是当我在函数init中调用函数名hihi时。 当我使用类型为Chat的create实例运行代码single时。 它无法运行并显示错误 TypeError:this.hihi不是HTMLButtonElement.Chat.init(fotozidiqo.js:9:10)中的函数 如何在init函数名中调用此函数。执行此操作时:函数原型调用另一个函数原型javascript,javascript,function-prototypes,Javascript,Function Prototypes,我在类类型原型中定义了两个方法。 但是当我在函数init中调用函数名hihi时。 当我使用类型为Chat的create实例运行代码single时。 它无法运行并显示错误 TypeError:this.hihi不是HTMLButtonElement.Chat.init(fotozidiqo.js:9:10)中的函数 如何在init函数名中调用此函数。执行此操作时:$('.chat')。打开(“单击”,this.init),jQuery将init()方法的this更改为从$('.chat')返回的元
$('.chat')。打开(“单击”,this.init)
,jQuery将init()
方法的this
更改为从$('.chat')
返回的元素。这就是为什么调用this.hihi()时它是未定义的代码>在init方法中,因为它不存在于HTMLElement
上
因此,为了获得正确的this
您必须像这样绑定聊天
原型的this
:
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()
方法上console.log(this)
,您将看到HTMLElement
this.init.bind(this)
这不是范围问题<代码>此
不称为“范围”。您能建议我更正吗solution@tomnyson更改此选项,$('.chat')。在(“单击”,this.init.bind(this))代码>应该完成这项工作。
function Chat() {
$('.chat').on("click", this.init.bind(this));
}