从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() {}
});