从jQuery调用JavaScript函数返回ReferenceError:未定义方法
我试着调用从jQuery调用JavaScript函数返回ReferenceError:未定义方法,javascript,jquery,Javascript,Jquery,我试着调用disconnect(),this.disconnect(),但它们都返回 ReferenceError:未定义断开连接 变量core如下: var MyObj = core.Class.extend({ connect: function() { $('body').keydown(function (e) { // want to call disconnect() in here }); }, disconnect:
disconnect()
,this.disconnect()
,但它们都返回
ReferenceError:未定义断开连接
变量core
如下:
var MyObj = core.Class.extend({
connect: function() {
$('body').keydown(function (e) {
// want to call disconnect() in here
});
},
disconnect: function() {
}
});
this
不是正确的this
使用以下命令:
core = require('some_module')
反而
Lambda函数保留它们运行的上下文
您还可以使用bind函数并保留一个保存上下文的变量,然后引用该变量。您需要将
此上下文存储到变量中
您的代码使用的是此函数的this
上下文:$('body').keydown(函数(e){…}
$('body').keydown((e)=>{
// this.disconnect() in here
})
这是无效的JavaScript语法。缺少冒号、右括号和逗号。请在发布之前检查您的代码。@trincot抱歉这是一个类型。已修复。您只修复了三个错误中的一个。请在发布之前检查您的代码是否已编译。或者如果他不想使用ES6$('body')。请键入(函数(e){this.disconnect()}.bind(this))
。此外,您的答案也缺少关于代码修复问题的原因的任何类型的信息。编辑并解释
var MyObj = core.Class.extend({
connect: function() {
var $self = this;
$('body').keydown(function(e) {
$self.disconnect();
});
},
disconnect: function() {}
});