从jQuery调用JavaScript函数会返回ReferenceError:未定义的方法

问题描述 投票:-1回答:2
var MyObj = core.Class.extend({

    connect: function() {
     $('body').keydown(function (e) {
        // want to call disconnect() in here
     });
    },

    disconnect: function() {
    }

});

我试过打电话给disconnect()this.disconnect(),但他们都回来了,

ReferenceError:未定义disconnect

这里的变量core是:

core = require('some_module')
javascript jquery
2个回答
1
投票

您需要将this上下文存储到变量中。

您的代码正在使用此函数的this上下文:$('body').keydown(function (e) {...}

var MyObj = core.Class.extend({

  connect: function() {
    var $self = this;
    $('body').keydown(function(e) {
      $self.disconnect();
    });
  },

  disconnect: function() {}
});

0
投票

this不是正确的this

用这个 :

 $('body').keydown((e)=>{
        // this.disconnect() in here
     })

代替

Lambda函数保留它们运行的​​上下文。

您还可以使用绑定函数,并保留一个保持上下文的变量,然后引用该变量

© www.soinside.com 2019 - 2024. All rights reserved.