Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在对象中引用自身匿名函数键Javascript_Javascript_Javascript Objects - Fatal编程技术网

在对象中引用自身匿名函数键Javascript

在对象中引用自身匿名函数键Javascript,javascript,javascript-objects,Javascript,Javascript Objects,我有一个目标: var crudConfig = function($wizard, $formModal, $deleteModal) { 'use strict'; return { handleOnShowFormModal : function() { $formModal.on('show.bs.modal', function(event) { ...................

我有一个目标:

var crudConfig = function($wizard, $formModal, $deleteModal) {

'use strict';

return {


    handleOnShowFormModal : function() {

        $formModal.on('show.bs.modal', function(event) {
               ...................
                    this.fillForms(data);
               ....................
        });

        return this;
    },
    fillForms : function(data) {
        //do stuff
        return this;
    }
 }
}
当我使用参数调用fillForms时,问题出现了

Uncaught TypeError: this.fillForms is not a function

由于fillForms键是一个匿名函数,如何从对象内部调用它?在其他相关问题上,我只找到了在键有字符串值且我这样调用时如何引用自身:
this.fillForms
回调中的this
引用了
$formModal
元素。您需要做的是在调用事件侦听器之前将引用该对象的
存储在变量中,并在回调中使用该变量访问该对象

就这样,

handleOnShowFormModal : function() {
  var _this = this
  $formModal.on('show.bs.modal', function(event) {
    _this.fillForms(data); 
  });

  return this;
},

回调中的此
引用
$formModal
元素。您需要做的是在调用事件侦听器之前将引用该对象的
存储在变量中,并在回调中使用该变量访问该对象

就这样,

handleOnShowFormModal : function() {
  var _this = this
  $formModal.on('show.bs.modal', function(event) {
    _this.fillForms(data); 
  });

  return this;
},

您应该使用构造函数而不是工厂函数。可能重复的应该使用构造函数而不是工厂函数。欢迎使用可能重复的构造函数。还有其他解决此问题的方法,比如使用将this对象绑定到回调对象。但是,这是最简单的。如果你能给我举个例子,我会很高兴学习…:)哦,查看@melpomene对你的问题的评论中的链接。接受的答案包含详细信息。欢迎您。还有其他解决此问题的方法,比如使用将this对象绑定到回调对象。但是,这是最简单的。如果你能给我举个例子,我会很高兴学习…:)哦,查看@melpomene对你的问题的评论中的链接。公认的答案包含详细信息。